| | |
| | | VITE_PORT = 3100 |
| | | |
| | | # ç½ç«æ é¢ |
| | | VITE_GLOB_APP_TITLE = æºè½ä¸èè¯å¹²ç¥ç³»ç» |
| | | VITE_GLOB_APP_TITLE = æºè½ä¸èè¯å¹²ç¥é
æ¹ç®¡çç³»ç» |
| | | |
| | | # ç®ç§°ï¼ç¨äºé
ç½®æä»¶åå ä¸è¦åºç°ç©ºæ ¼ãæ°åå¼å¤´çç¹æ®å符 |
| | | VITE_GLOB_APP_SHORT_NAME = JeecgBootAdmin |
| | |
| | | <MenuDivider v-if="getShowDoc" /> |
| | | <MenuItem key="account" :text="t('layout.header.dropdownItemSwitchAccount')" icon="ant-design:setting-outlined" /> |
| | | <MenuItem key="password" :text="t('layout.header.dropdownItemSwitchPassword')" icon="ant-design:edit-outlined" /> |
| | | <MenuItem key="depart" :text="t('layout.header.dropdownItemSwitchDepart')" icon="ant-design:cluster-outlined" /> |
| | | <!-- <MenuItem key="depart" :text="t('layout.header.dropdownItemSwitchDepart')" icon="ant-design:cluster-outlined" /> --> |
| | | <MenuItem key="cache" :text="t('layout.header.dropdownItemRefreshCache')" icon="ion:sync-outline" /> |
| | | <!-- <MenuItem |
| | | v-if="getUseLockPage" |
| | |
| | | import { BasicTable, TableAction } from '/@/components/Table' |
| | | import { useListPage } from '/@/hooks/system/useListPage' |
| | | import { downloadFile } from '/@/utils/common/renderUtils' |
| | | import { router } from '/@/router' |
| | | |
| | | const checkedKeys = ref<Array<string | number>>([]) |
| | | //注åmodel |
| | | const [registerModal, { openModal }] = useModal() |
| | |
| | | function getTableAction(record) { |
| | | return [ |
| | | { |
| | | label: 'ç¼è¾', |
| | | onClick: handleEdit.bind(null, record), |
| | | label: 'æä½è®°å½', |
| | | onClick: openReport.bind(null, record), |
| | | }, |
| | | ] |
| | | } |
| | |
| | | */ |
| | | function getDropDownAction(record) { |
| | | return [ |
| | | { |
| | | label: 'ç¼è¾', |
| | | onClick: handleEdit.bind(null, record), |
| | | }, |
| | | { |
| | | label: '详æ
', |
| | | onClick: handleDetail.bind(null, record), |
| | |
| | | }, |
| | | ] |
| | | } |
| | | |
| | | /**æå¼æ¥è¡¨ */ |
| | | function openReport(record: Recordable) { |
| | | console.log(`output->record`, record) |
| | | router.push({ |
| | | path: '/dry/order/report', |
| | | query: { |
| | | batch: record.code, |
| | | }, |
| | | }) |
| | | } |
| | | </script> |
| | | |
| | | <style scoped></style> |
| | |
| | | <template> |
| | | <dv-full-screen-container> |
| | | <div class="eqpBox"> |
| | | <div class="eqpRow"> |
| | | <div class="eqpImage" :style="{'background-position':position + 'px'}"> |
| | | |
| | | <div class="leftEqp"> |
| | | <div style="width: 350px; "> |
| | | <div class="herbInfo"> |
| | | |
| | | <dv-border-box7 class="curEqp"> |
| | | <div class="eqpName" style="padding: 30px" @click="changeEqp"> |
| | | <div class="mainInfo" style="font-size: 26px">{{ eqp?.name }}</div> |
| | | <div class="subhead">{{ eqp?.type }}</div> |
| | | <dv-decoration-1 style="width:300px;height:90px; margin-left: 20px;" /> |
| | | <!-- 设å¤ï¼{{ eqp.name }}</div> |
| | | <dv-full-screen-container> |
| | | <div class="eqpBox"> |
| | | <div class="eqpRow"> |
| | | <div class="eqpImage" :style="{ 'background-position': position + 'px' }"> |
| | | <div class="leftEqp"> |
| | | <div style="width: 350px"> |
| | | <div class="herbInfo"> |
| | | <dv-border-box7 class="curEqp"> |
| | | <div style="display: flex"> |
| | | <div style="padding-top: 20px; padding-left: 10px" @click="back"> |
| | | <Icon style="color: powderblue" icon="ion:caret-back-sharp" :size="35" /> |
| | | </div> |
| | | <div class="eqpName" style="text-align: right" @click="changeEqp"> |
| | | <div class="mainInfo" style="font-size: 26px">{{ eqp?.name }}</div> |
| | | <div class="subhead">{{ eqp?.type }}</div> |
| | | <dv-decoration-1 style="width: 240px; height: 90px; margin-left: 20px" /> |
| | | <!-- 设å¤ï¼{{ eqp.name }}</div> |
| | | <div class="eqpName">åå·ï¼{{ eqp.type }}</div> --> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="curHerb" :style="{'background-image': 'url('+getHerbImageUrl(realData?.herbImage)+')'}"> |
| | | <div class="eqpName" style="margin-left: 176px; height: 190px"> |
| | | <div class="mainInfo" style="font-size: 26px">{{ realData?.herbName }}</div> |
| | | <div class="subhead">å¹²ç¥é
æ¹</div> |
| | | </div> |
| | | <div class="formula"> |
| | | <div class="formulaItem"> |
| | | <Icon style="color: powderblue" icon="icon-park-twotone:box" :size="35" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.feed }} ç</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="subhead2">çé£</div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="curHerb" :style="{ 'background-image': 'url(' + getHerbImageUrl(realData?.herbImage) + ')' }"> |
| | | <div class="eqpName" style="margin-left: 156px; height: 190px"> |
| | | <div class="mainInfo" style="font-size: 26px">{{ realData?.herbName }}</div> |
| | | <div class="subhead">å¹²ç¥é
æ¹</div> |
| | | </div> |
| | | <div class="formula"> |
| | | <div class="formulaItem"> |
| | | <Icon style="color: powderblue" icon="icon-park-twotone:box" :size="35" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.feed }} ç</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="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="subhead2">ç®æ </div> |
| | | </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="subhead2">ç®æ </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="eqpName">{{ realData?.herbName }}</div> |
| | | <!-- <div class="eqpName">{{ realData?.herbName }}</div> |
| | | <div class="eqpName">{{ realData?.feed }} ç</div> --> |
| | | </dv-border-box7> |
| | | </div> |
| | | <!-- <dv-border-box7 class="infoChart" style="margin-left: 0px;"> |
| | | </dv-border-box7> |
| | | </div> |
| | | <!-- <dv-border-box7 class="infoChart" style="margin-left: 0px;"> |
| | | <div class="chartTittle">飿ºé¢ç</div> |
| | | <div class="outDiv" style="padding-top: 10px"> |
| | | <div id="fanFreq" style="width: 240px; height: 240px"></div> |
| | | </div> |
| | | </dv-border-box7> --> |
| | | <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 |
| | | > % |
| | | <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> % |
| | | </div> |
| | | <div class="subhead2">ç®æ 嫿°´ç</div> |
| | | </div> |
| | | <div class="subhead2">ç®æ 嫿°´ç</div> |
| | | </div> |
| | | <div class="center" style="height: 50%"> |
| | | <div> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.initial }}</span> %</div |
| | | > |
| | | <div class="subhead2">æ¥æå«æ°´ç</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="center" style="height: 50%"> |
| | | <div> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.initial }}</span |
| | | > %</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> |
| | | </dv-border-box7> |
| | | </div> |
| | | <dv-border-box7 class="leftTop"> |
| | | <div class="leftTop0"> |
| | | <div class="leftTop1"> |
| | | <Icon icon="emojione:hourglass-with-flowing-sand" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData?.totalRemain | 0 }} Min</div> |
| | | <div class="subhead">å©ä½æ¶é´</div> |
| | | </div> |
| | | </div> |
| | | <div class="leftTop1"> |
| | | <Icon icon="bi:fan" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData.trendVo?.fanFrequency | 0 }} Hz</div> |
| | | <div class="subhead">飿ºé¢ç</div> |
| | | </div> |
| | | </div> |
| | | <div class="leftTop3" :style="{ 'background-image': 'url(' + getStatusImageUrl(statusGif) + ')' }"></div> |
| | | <div class="outDiv eqpStatus"> |
| | | <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; |
| | | 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 class="subhead2">æ¥æå«æ°´ç</div> |
| | | </div> |
| | | </div> |
| | | </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> |
| | | </dv-border-box7> |
| | | </div> |
| | | <dv-border-box7 class="leftTop"> |
| | | <div class="leftTop0"> |
| | | <div class="leftTop1"> |
| | | <Icon icon="emojione:hourglass-with-flowing-sand" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData?.totalRemain | 0 }} Min</div> |
| | | <div class="subhead">å©ä½æ¶é´</div> |
| | | </div> |
| | | </div> |
| | | <div class="leftTop1"> |
| | | <Icon icon="bi:fan" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData.trendVo?.fanFrequency | 0 }} Hz</div> |
| | | <div class="subhead">飿ºé¢ç</div> |
| | | </div> |
| | | </div> |
| | | <div class="leftTop3" :style="{ 'background-image': 'url(' + getStatusImageUrl(statusGif) + ')' }"></div> |
| | | <div class="outDiv eqpStatus"> |
| | | <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; |
| | | 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> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="infoChart" style="margin-left: 0px; margin-right: 10px;"> |
| | | <dv-border-box7 class="infoChart" style="margin-left: 0px; margin-right: 10px"> |
| | | <div class="chartTittle">é£ç®±æ¸©åº¦</div> |
| | | <div class="outDiv"> |
| | | <div id="bellowsTemp" style="width: 230px; height: 230px"> |
| | |
| | | </div> |
| | | </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 style="height: 10px; display: flex; width: 848px; padding: 0 60px; justify-content: space-between"> |
| | | <div style="width: 100px; height: 20px">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> |
| | | </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 style="height: 10px; display: flex; width: 848px; padding: 0 60px; justify-content: space-between"> |
| | | <div style="width: 100px; height: 20px">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> |
| | | </dv-border-box7> |
| | | |
| | | <!-- <div class="outDiv"> |
| | | <!-- <div class="outDiv"> |
| | | <div style="height: 100px; width: 400px"> |
| | | <Progress |
| | | :stroke-color="{ |
| | |
| | | </div> |
| | | </div> |
| | | </div> --> |
| | | </div> |
| | | <div class="rightInfo"> |
| | | <div class="rightTop"> |
| | | |
| | | <dv-border-box7 class="tempMoisChart"> |
| | | <div :id="'moisChart'" style="width: 690px; height: 420px"></div> |
| | | </dv-border-box7> |
| | | </div> |
| | | <div class="rightTwo"> |
| | | <dv-border-box7 class="infoChart"> |
| | | <div class="chartTittle"> |
| | | å¹²ç¥æç(kg/h) |
| | | <div class="rightLabel"> |
| | | <div class="label good">>{{ standard.xiaolv }} ä¼ </div> |
| | | <div class="label bad"><{{ standard.xlMin }} å·®</div> |
| | | </div> |
| | | </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?.originWeight - realData?.yield) | 0 }}</span |
| | | > kg |
| | | </div> |
| | | <div class="subhead2">æ°´åè¸å</div> |
| | | </div> |
| | | </div> |
| | | <div class="center" style="height: 50%"> |
| | | <div> |
| | | <div class="mainInfo3">{{ realData?.dryTime | 0 }} min</div> |
| | | <div class="subhead2">å¹²ç¥ç¨æ¶</div> |
| | | </div> |
| | | <div class="rightInfo"> |
| | | <div class="rightTop"> |
| | | <dv-border-box7 class="tempMoisChart"> |
| | | <div :id="'moisChart'" style="width: 690px; height: 420px"></div> |
| | | </dv-border-box7> |
| | | </div> |
| | | <div class="rightTwo"> |
| | | <dv-border-box7 class="infoChart"> |
| | | <div class="chartTittle"> |
| | | å¹²ç¥æç(kg/h) |
| | | <div class="rightLabel"> |
| | | <div class="label good">>{{ standard.xiaolv }} ä¼ </div> |
| | | <div class="label bad"><{{ standard.xlMin }} å·®</div> |
| | | </div> |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ standard.xiaolv }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :style="{ height: realData?.xlsHeight }"></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | é¢å® |
| | | <br /> |
| | | æç |
| | | </div> |
| | | </div> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ realData?.xiaolv | 0 }}</div> |
| | | <div class="barBack"> |
| | | <div |
| | | class="barDiv" |
| | | :class="{ good: realData?.xlgood, bad: realData?.xlbad }" |
| | | :style="[realData?.xlrHeight && { height: realData?.xlrHeight }]" |
| | | > |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | | <div class="leftData"> |
| | | <div class="center" style="height: 50%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3" |
| | | ><span>{{ (realData?.originWeight - realData?.yield) | 0 }}</span> kg |
| | | </div> |
| | | <div class="subhead2">æ°´åè¸å</div> |
| | | </div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | 宿¶ |
| | | <br /> |
| | | æç |
| | | <div class="center" style="height: 50%"> |
| | | <div> |
| | | <div class="mainInfo3">{{ realData?.dryTime | 0 }} min</div> |
| | | <div class="subhead2">å¹²ç¥ç¨æ¶</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ standard.xiaolv }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :style="{ height: realData?.xlsHeight }"></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | é¢å® |
| | | <br /> |
| | | æç |
| | | </div> |
| | | </div> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ realData?.xiaolv | 0 }}</div> |
| | | <div class="barBack"> |
| | | <div |
| | | class="barDiv" |
| | | :class="{ good: realData?.xlgood, bad: realData?.xlbad }" |
| | | :style="[realData?.xlrHeight && { height: realData?.xlrHeight }]" |
| | | > |
| | | </div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | 宿¶ |
| | | <br /> |
| | | æç |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | | |
| | | |
| | | |
| | | |
| | | <dv-border-box7 class="infoChart"> |
| | | <div class="chartTittle" |
| | | >è¸æ±½æ¶è(m³/kg) |
| | | <div class="rightLabel"> |
| | | <div class="label bad">>{{ standard.zhengqi }} å·®</div> |
| | | <div class="label good"><{{ standard.zqMin }} ä¼</div> |
| | | </dv-border-box7> |
| | | |
| | | <dv-border-box7 class="infoChart"> |
| | | <div class="chartTittle" |
| | | >è¸æ±½æ¶è(m³/kg) |
| | | <div class="rightLabel"> |
| | | <div class="label bad">>{{ standard.zhengqi }} å·®</div> |
| | | <div class="label good"><{{ standard.zqMin }} ä¼</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | | <div class="leftData"> |
| | | <div class="center" style="height: 100%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3"><span>{{realData?.steam}}</span> m³ </div> |
| | | <div class="subhead2">è¸æ±½ç¨é</div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | | <div class="leftData"> |
| | | <div class="center" style="height: 100%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.steam }}</span> m³ |
| | | </div> |
| | | <div class="subhead2">è¸æ±½ç¨é</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ standard.zhengqi }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :style="{ height: realData?.zqsHeight }"></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | é¢å® |
| | | <br /> |
| | | æ¶è |
| | | </div> |
| | | </div> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ realData?.zhengqi | 0 }}</div> |
| | | <div class="barBack"> |
| | | <div |
| | | class="barDiv" |
| | | :class="{ good: realData?.zqgood, bad: realData?.zqbad }" |
| | | :style="[realData?.zqrHeight && { height: realData?.zqrHeight }]" |
| | | > |
| | | </div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | 宿¶ |
| | | <br /> |
| | | æ¶è |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{standard.zhengqi}}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :style="{ height: realData?.zqsHeight }"></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | é¢å® |
| | | <br /> |
| | | æ¶è |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="infoChart"> |
| | | <div class="chartTittle">æç对æ¯</div> |
| | | <div class="outDiv" style="padding-top: 10px"> |
| | | <div id="compare" style="width: 300px; height: 250px"></div> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="infoChart"> |
| | | <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> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | | <div class="leftData"> |
| | | <div class="center" style="height: 100%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.watt }}</span> kWh |
| | | </div> |
| | | <div class="subhead2">çµè½ç¨é</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{realData?.zhengqi | 0 }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :class="{ good: realData?.zqgood, bad: realData?.zqbad }" |
| | | :style="[realData?.zqrHeight && { height: realData?.zqrHeight }]"> </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ standard.dian }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :style="{ height: realData?.dnsHeight }"></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | é¢å® |
| | | <br /> |
| | | æ¶è |
| | | </div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | 宿¶ |
| | | <br /> |
| | | æ¶è |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ realData?.dian | 0 }}</div> |
| | | <div class="barBack"> |
| | | <div |
| | | class="barDiv" |
| | | :class="{ good: realData?.dngood, bad: realData?.dnbad }" |
| | | :style="[realData?.dnrHeight && { height: realData?.dnrHeight }]" |
| | | ></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | 宿¶ |
| | | <br /> |
| | | æ¶è |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="infoChart" > |
| | | <div class="chartTittle">æç对æ¯</div> |
| | | <div class="outDiv" style="padding-top: 10px"> |
| | | <div id="compare" style="width: 300px; height: 250px"></div> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="infoChart"> |
| | | <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> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | | <div class="leftData"> |
| | | <div class="center" style="height: 100%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3"><span>{{realData?.watt}}</span> kWh </div> |
| | | <div class="subhead2">çµè½ç¨é</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{standard.dian}}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :style="{ height: realData?.dnsHeight }"></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | é¢å® |
| | | <br /> |
| | | æ¶è |
| | | </div> |
| | | </div> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{realData?.dian | 0}}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :class="{ good: realData?.dngood, bad: realData?.dnbad }" |
| | | :style="[realData?.dnrHeight && { height: realData?.dnrHeight }]"></div> |
| | | </div> |
| | | <div style="line-height: 20px"> |
| | | 宿¶ |
| | | <br /> |
| | | æ¶è |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | | |
| | | </dv-border-box7> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </dv-full-screen-container> |
| | | </dv-full-screen-container> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useFullscreen } from '@vueuse/core'; |
| | | import { useFullscreen } from '@vueuse/core' |
| | | import { BorderBox7 as DvBorderBox7 } from '@kjgl77/datav-vue3' |
| | | import { router } from '/@/router' |
| | | import { onMounted, ref, onUnmounted } from 'vue' |
| | |
| | | import 'echarts-liquidfill' |
| | | import { Icon, IconPicker, SvgIcon } from '/@/components/Icon/index' |
| | | import { defHttp } from '/@/utils/http/axios' |
| | | import { queryById,listAll } from '../api/DryEquipment.api' |
| | | import { queryById, listAll } from '../api/DryEquipment.api' |
| | | import { dryEquipment } from '../dataDefine/DryEquipment.data' |
| | | import { useUserStore } from '/@/store/modules/user' |
| | | |
| | | |
| | | const domRef = ref<Nullable<HTMLElement>>(null) |
| | | const { enter, toggle, exit, isFullscreen } = useFullscreen() |
| | | |
| | | |
| | | const domRef = ref<Nullable<HTMLElement>>(null); |
| | | const { enter, toggle, exit, isFullscreen } = useFullscreen(); |
| | | |
| | | const { toggle: toggleDom } = useFullscreen(domRef); |
| | | const { toggle: toggleDom } = useFullscreen(domRef) |
| | | const Timer = ref() |
| | | const Timer2 = ref() |
| | | const Timer2 = ref() |
| | | const marks = ref<Record<number, any>>({ |
| | | 0: '0°C', |
| | | 1: '', |
| | |
| | | 99: '', |
| | | 100: '100°C', |
| | | }) |
| | | const eqps = ref([] as dryEquipment[]) |
| | | |
| | | const eqp = ref({} as dryEquipment) |
| | | const eqpNum = ref(1) |
| | | const eqps = ref([] as dryEquipment[]) |
| | | //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() |
| | | const realData = ref({}) |
| | | const standard = ref({ |
| | |
| | | dMin: 7.5, |
| | | }) |
| | | |
| | | const position = ref(1) |
| | | const position = ref(1) |
| | | //realData.value.tempValue = [0, 100] |
| | | realData.value.mois = [0.5, 0.35, 0.2] |
| | | statusGif = 'tmrefeng2' |
| | |
| | | text: '嫿°´ç/温度è¶å¿', |
| | | textStyle: { |
| | | color: '#fff', |
| | | fontSize: 15 |
| | | fontSize: 15, |
| | | }, |
| | | |
| | | }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | |
| | | legend: { |
| | | right: 60, |
| | | textStyle: { |
| | | color: '#fff' |
| | | } |
| | | color: '#fff', |
| | | }, |
| | | }, |
| | | // toolbox: { |
| | | // show: true, |
| | |
| | | // }, |
| | | xAxis: { |
| | | type: 'value', |
| | | axisLabel:{ |
| | | color: '#fff' |
| | | axisLabel: { |
| | | color: '#fff', |
| | | }, |
| | | //boundaryGap: false, |
| | | // data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], |
| | |
| | | splitLine: { |
| | | lineStyle: { |
| | | type: 'dashed', |
| | | color: ['#2b2b2b'] |
| | | } |
| | | } |
| | | color: ['#2b2b2b'], |
| | | }, |
| | | }, |
| | | }, |
| | | yAxis: { |
| | | type: 'value', |
| | | boundaryGap: ['10%', '10%'], |
| | | axisLabel:{ |
| | | color: '#fff' |
| | | axisLabel: { |
| | | color: '#fff', |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | type: 'dashed', |
| | | color: ['#2b2b2b'] |
| | | } |
| | | } |
| | | color: ['#2b2b2b'], |
| | | }, |
| | | }, |
| | | // min: 0, |
| | | // max: function (value) { |
| | | // if (value.max < 100) { |
| | |
| | | areaStyle: { |
| | | opacity: 0.2, |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(128, 255, 165)' |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(1, 191, 236)' |
| | | } |
| | | ]) |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(128, 255, 165)', |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(1, 191, 236)', |
| | | }, |
| | | ]), |
| | | }, |
| | | }, |
| | | { |
| | |
| | | areaStyle: { |
| | | opacity: 0.2, |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(255, 0, 135)' |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(135, 0, 157)' |
| | | } |
| | | ]) |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(255, 0, 135)', |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(135, 0, 157)', |
| | | }, |
| | | ]), |
| | | }, |
| | | // markLine: { |
| | | // data: [ |
| | |
| | | amplitude: 3, |
| | | animationDuration: 5, |
| | | //animationDurationUpdate: 0, |
| | | data: [0.56,0.44,0.32], |
| | | 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: { |
| | |
| | | legend: { |
| | | right: 60, |
| | | textStyle: { |
| | | color: '#fff' |
| | | } |
| | | color: '#fff', |
| | | }, |
| | | }, |
| | | xAxis: { |
| | | show: false, |
| | |
| | | ], |
| | | }, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'é¢å®', |
| | | yAxis: standard.value.xiaolv, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | color: '#fff' |
| | | }, |
| | | }, |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'é¢å®', |
| | | yAxis: standard.value.xiaolv, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | color: '#fff', |
| | | }, |
| | | }, |
| | | // markLine: { |
| | | // data: [{ type: 'average', name: 'Avg' }], |
| | | // }, |
| | |
| | | } |
| | | |
| | | const compareOption = { |
| | | |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | |
| | | }, |
| | | grid: { |
| | | top: '6%', |
| | | left: '3%', |
| | | right: '10%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | containLabel: true, |
| | | }, |
| | | xAxis: { |
| | | show: false, |
| | | type: 'value', |
| | | |
| | | }, |
| | | yAxis: { |
| | | axisLine: { |
| | | show:false, |
| | | show: false, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | type: 'category', |
| | | data: ['1#', '2#', '3#', '4#', '5#', '6#'] |
| | | data: ['1#', '2#', '3#', '4#', '5#', '6#'], |
| | | }, |
| | | series: [ |
| | | { |
| | |
| | | show: true, |
| | | position: 'right', |
| | | valueAnimation: true, |
| | | |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | |
| | | color: '#fff', |
| | | }, |
| | | }, |
| | | ], |
| | | } |
| | | |
| | | option && moisChart.setOption(option) |
| | | waterOption && waterChart.setOption(waterOption) |
| | |
| | | } |
| | | |
| | | // å¨æè¯»åå¾ç |
| | | function getHerbImageUrl(name: string) { |
| | | return new URL(`/src/assets/images/dry/yaocai/${name}`, import.meta.url).href; |
| | | } |
| | | function getHerbImageUrl(name: string) { |
| | | return new URL(`/src/assets/images/dry/yaocai/${name}`, import.meta.url).href |
| | | } |
| | | |
| | | // å¨æè¯»åå¾ç |
| | | function getStatusImageUrl(name: string) { |
| | | return new URL(`/src/assets/images/dry/${name}.gif`, import.meta.url).href; |
| | | } |
| | | 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) |
| | |
| | | }) |
| | | } |
| | | |
| | | function listAllEqp() { |
| | | function listAllEqp() { |
| | | listAll({ enable: 'Y' }) |
| | | .then((result) => { |
| | | //console.log(`output->result`, result) |
| | |
| | | // eqpCodes.push(item.code) |
| | | // }) |
| | | queryRealTime() |
| | | setTimeout(initCharts, 500) |
| | | |
| | | setTimeout(initCharts, 500) |
| | | }) |
| | | .catch((err) => { |
| | | //console.log(`output->err`, err) |
| | | }) |
| | | } |
| | | |
| | | |
| | | var num = eqpNum.value; |
| | | var num = eqpNum.value |
| | | |
| | | function changeEqp() { |
| | | //console.log("changeEqp::",eqps.value.length); |
| | | num ++; |
| | | if (eqps.value.length > 0) { |
| | | var i = num%eqps.value.length |
| | | //eqp.value = eqps.value[i] |
| | | // console.log("777",i); |
| | | eqpNum.value = i; |
| | | //console.log("888",eqp.value); |
| | | queryRealTime() |
| | | num++ |
| | | if (eqps.value.length > 0) { |
| | | var i = num % eqps.value.length |
| | | //eqp.value = eqps.value[i] |
| | | // console.log("777",i); |
| | | eqpNum.value = i |
| | | //console.log("888",eqp.value); |
| | | queryRealTime() |
| | | //setTimeout(initCharts, 500) |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | // function queryEqpsReal() { |
| | | |
| | | // if (eqps.value.length > 0) { |
| | | // var i = num%eqps.value.length |
| | | // eqp.value = eqps[i] |
| | | // console.log("777",i); |
| | | // console.log("888",eqp.value); |
| | | // queryRealTime() |
| | | // //setTimeout(initCharts, 500) |
| | | // } |
| | | // num ++; |
| | | // } |
| | | // function queryEqpsReal() { |
| | | |
| | | var shangliaoFlag = false; |
| | | var statusGif = 'tmrefeng2'; |
| | | // if (eqps.value.length > 0) { |
| | | // var i = num%eqps.value.length |
| | | // eqp.value = eqps[i] |
| | | // console.log("777",i); |
| | | // console.log("888",eqp.value); |
| | | // queryRealTime() |
| | | // //setTimeout(initCharts, 500) |
| | | // } |
| | | // num ++; |
| | | // } |
| | | |
| | | var shangliaoFlag = false |
| | | var statusGif = 'tmrefeng2' |
| | | var statusTxt = 'æ£å¨å¹²ç¥' |
| | | |
| | | function chaiwangban() { |
| | | statusGif = 'chaiwangban-1' |
| | | setTimeout(shangliao,7000) |
| | | |
| | | setTimeout(shangliao, 7000) |
| | | } |
| | | |
| | | function shangliao() { |
| | | statusGif = "shangliao-N" |
| | | setTimeout(()=>{ |
| | | statusGif = "zhuangwangban" |
| | | setTimeout(()=>{ |
| | | statusGif = "guanmen1" |
| | | setTimeout(()=>{ |
| | | statusGif = 'shangliao-N' |
| | | setTimeout(() => { |
| | | statusGif = 'zhuangwangban' |
| | | setTimeout(() => { |
| | | statusGif = 'guanmen1' |
| | | setTimeout(() => { |
| | | shangliaoFlag = false |
| | | },4000) |
| | | |
| | | },7000) |
| | | },15000) |
| | | }, 4000) |
| | | }, 7000) |
| | | }, 15000) |
| | | } |
| | | |
| | | |
| | | function queryRealTime() { |
| | | |
| | | if (eqp.value) { |
| | | eqp.value = eqps.value[eqpNum.value] |
| | | // console.log("888",eqp.value); |
| | | let tenantId = 1003 |
| | | let eqpCode = eqp.value.code |
| | | let queryRealTimeUrl = '/dry/real/getRealTimeData' |
| | | defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenantId, machineid: eqpCode} }).then((res) => { |
| | | |
| | | if (res && res.trendVo) { |
| | | //console.log(`output->re11s`, res) |
| | | // res.tempValue = [res.windTemp, 100] |
| | | //res.percent = ((res.dryTime / res.et) * 100).toFixed(2) |
| | | /**æ°´æ»´å¾å«æ°´é */ |
| | | res.mois = [ |
| | | (res.trendVo.moisture / 100).toFixed(2), |
| | | (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 + '%' |
| | | if (eqp.value) { |
| | | eqp.value = eqps.value[eqpNum.value] |
| | | // console.log("888",eqp.value); |
| | | let tenantId = 1003 |
| | | let eqpCode = eqp.value.code |
| | | let queryRealTimeUrl = '/dry/real/getRealTimeData' |
| | | defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenantId, machineid: eqpCode } }).then((res) => { |
| | | if (res && res.trendVo) { |
| | | //console.log(`output->re11s`, res) |
| | | // res.tempValue = [res.windTemp, 100] |
| | | //res.percent = ((res.dryTime / res.et) * 100).toFixed(2) |
| | | /**æ°´æ»´å¾å«æ°´é */ |
| | | res.mois = [ |
| | | (res.trendVo.moisture / 100).toFixed(2), |
| | | (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, |
| | | }, |
| | | fontSize: 20, |
| | | }, |
| | | }, |
| | | ], |
| | | }) |
| | | } |
| | | ], |
| | | }) |
| | | } |
| | | |
| | | /**温度ç¯å½¢å¾ */ |
| | | if (bellowsTempChart) { |
| | | bellowsTempChart.setOption({ |
| | | series: [{ data: [{ value: res.windTemp }] }, { data: [{ value: res.windTemp }] }], |
| | | }) |
| | | } |
| | | /**飿ºé¢çç¯å½¢å¾ */ |
| | | // if (fanFreqChart) { |
| | | // fanFreqChart.setOption({ |
| | | // series: [ |
| | | // { |
| | | // data: [ |
| | | // { |
| | | // value: res.trendVo.fanFrequency, |
| | | // }, |
| | | // ], |
| | | // }, |
| | | // ], |
| | | // }) |
| | | // } |
| | | /**å¹²ç¥è¿åº¦ãèµ°å¿ä¸é¶æ®µæçåé¶æ®µæ¶è */ |
| | | if (res && res.detailList) { |
| | | var progressSeries = [] |
| | | var ganZaoXiaoLv = [] |
| | | var zhengQiXiaoHao = [] |
| | | var dianNengXiaoHao = [] |
| | | var totalTime = 0 |
| | | var beforeWeight = 0 |
| | | res.moisList = [] |
| | | beforeWeight = res.originWeight |
| | | //console.log(`output->res`, res) |
| | | res.detailList.forEach((item) => { |
| | | //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) |
| | | var curDryTime = item.totalTime - totalTime |
| | | /**温度ç¯å½¢å¾ */ |
| | | if (bellowsTempChart) { |
| | | bellowsTempChart.setOption({ |
| | | series: [{ data: [{ value: res.windTemp }] }, { data: [{ value: res.windTemp }] }], |
| | | }) |
| | | } |
| | | /**飿ºé¢çç¯å½¢å¾ */ |
| | | // if (fanFreqChart) { |
| | | // fanFreqChart.setOption({ |
| | | // series: [ |
| | | // { |
| | | // data: [ |
| | | // { |
| | | // value: res.trendVo.fanFrequency, |
| | | // }, |
| | | // ], |
| | | // }, |
| | | // ], |
| | | // }) |
| | | // } |
| | | /**å¹²ç¥è¿åº¦ãèµ°å¿ä¸é¶æ®µæçåé¶æ®µæ¶è */ |
| | | if (res && res.detailList) { |
| | | var progressSeries = [] |
| | | var ganZaoXiaoLv = [] |
| | | var zhengQiXiaoHao = [] |
| | | var dianNengXiaoHao = [] |
| | | var totalTime = 0 |
| | | var beforeWeight = 0 |
| | | res.moisList = [] |
| | | beforeWeight = res.originWeight |
| | | //console.log(`output->res`, res) |
| | | res.detailList.forEach((item) => { |
| | | //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) |
| | | var curDryTime = item.totalTime - totalTime |
| | | |
| | | if (curDryTime > 0) { |
| | | if (curDryTime > 0) { |
| | | progressSeries.push({ |
| | | name: item.moisture, |
| | | type: 'bar', |
| | | stack: 'total', |
| | | label: { |
| | | show: true, |
| | | }, |
| | | emphasis: { |
| | | focus: 'series', |
| | | }, |
| | | data: [item.totalTime - totalTime], |
| | | }) |
| | | ganZaoXiaoLv.push([curDryTime / 2 + totalTime, (((beforeWeight - item.weight) / curDryTime) * 60).toFixed(1)]) |
| | | |
| | | totalTime = item.totalTime |
| | | } |
| | | beforeWeight = item.weight |
| | | }) |
| | | |
| | | if (res.remain) { |
| | | if (res.dryTime - totalTime > 0) { |
| | | progressSeries.push({ |
| | | name: 'å½å', |
| | | type: 'bar', |
| | | stack: 'total', |
| | | label: { |
| | | show: true, |
| | | }, |
| | | emphasis: { |
| | | focus: 'series', |
| | | }, |
| | | data: [ |
| | | { |
| | | value: res.dryTime - totalTime, |
| | | }, |
| | | ], |
| | | }) |
| | | } |
| | | |
| | | // ganZaoXiaoLv.push([totalTime + res.remain,standard.value.xiaolv]) |
| | | |
| | | res.totalRemain = res.remain - (res.dryTime - totalTime) > 0 ? res.remain - (res.dryTime - totalTime) : 0 |
| | | progressSeries.push({ |
| | | name: item.moisture, |
| | | type: 'bar', |
| | | stack: 'total', |
| | | label: { |
| | | show: true, |
| | | }, |
| | | emphasis: { |
| | | focus: 'series', |
| | | }, |
| | | data: [item.totalTime - totalTime], |
| | | }) |
| | | ganZaoXiaoLv.push([curDryTime / 2 + totalTime, (((beforeWeight - item.weight) / curDryTime) * 60).toFixed(1)]) |
| | | |
| | | totalTime = item.totalTime |
| | | } |
| | | beforeWeight = item.weight |
| | | }) |
| | | |
| | | if (res.remain) { |
| | | if (res.dryTime - totalTime > 0) { |
| | | progressSeries.push({ |
| | | name: 'å½å', |
| | | name: 'å©ä½', |
| | | type: 'bar', |
| | | stack: 'total', |
| | | label: { |
| | |
| | | }, |
| | | data: [ |
| | | { |
| | | value: res.dryTime - totalTime, |
| | | value: res.remain - (res.dryTime - totalTime), |
| | | itemStyle: { |
| | | color: '#c0c0c0', |
| | | }, |
| | | }, |
| | | ], |
| | | }) |
| | | } |
| | | |
| | | // ganZaoXiaoLv.push([totalTime + res.remain,standard.value.xiaolv]) |
| | | |
| | | res.totalRemain = res.remain - (res.dryTime - totalTime)>0?res.remain - (res.dryTime - totalTime):0 |
| | | progressSeries.push({ |
| | | name: 'å©ä½', |
| | | type: 'bar', |
| | | stack: 'total', |
| | | label: { |
| | | show: true, |
| | | }, |
| | | emphasis: { |
| | | focus: 'series', |
| | | }, |
| | | data: [ |
| | | /**å¹²ç¥è¿åº¦ */ |
| | | if (progressBarChart) { |
| | | //console.log(`output->progressSeries`, progressSeries) |
| | | progressBarChart.setOption( |
| | | { |
| | | value: res.remain - (res.dryTime - totalTime), |
| | | itemStyle: { |
| | | color: '#c0c0c0', |
| | | xAxis: { |
| | | max: totalTime + res.remain, |
| | | }, |
| | | series: progressSeries, |
| | | }, |
| | | ], |
| | | }) |
| | | { replaceMerge: ['series'] } |
| | | ) |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | /**å¹²ç¥è¿åº¦ */ |
| | | if (progressBarChart) { |
| | | //console.log(`output->progressSeries`, progressSeries) |
| | | progressBarChart.setOption( |
| | | { |
| | | res.totalTime = totalTime + res.remain |
| | | /**å¹²ç¥æçãæ¶è */ |
| | | if (efficiencyLineChart) { |
| | | //console.log(`output->ganZaoXiaoLv`, ganZaoXiaoLv) |
| | | efficiencyLineChart.setOption({ |
| | | xAxis: { |
| | | max: totalTime + res.remain, |
| | | }, |
| | | series: progressSeries, |
| | | }, |
| | | { replaceMerge: ['series'] } |
| | | ) |
| | | series: [ |
| | | { |
| | | data: ganZaoXiaoLv, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'é¢å®', |
| | | yAxis: standard.value.xiaolv, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | color: '#fff', |
| | | }, |
| | | }, |
| | | }, |
| | | { data: zhengQiXiaoHao }, |
| | | { data: dianNengXiaoHao }, |
| | | ], |
| | | }) |
| | | } |
| | | |
| | | res.moisList.push([res.dryTime, res.trendVo.moisture]) |
| | | } |
| | | |
| | | res.totalTime = totalTime + res.remain |
| | | /**å¹²ç¥æçãæ¶è */ |
| | | 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, |
| | | /**温度è¶å¿ */ |
| | | if (res && res.bellowsTemp) { |
| | | Array.from(Object.entries(res.bellowsTemp)) |
| | | var arr = Object.keys(res.bellowsTemp) |
| | | var temArr = [] |
| | | arr.forEach((item) => { |
| | | temArr.push([item * 1, res.bellowsTemp[item]]) |
| | | }) |
| | | |
| | | //console.log(`output->arr` + JSON.stringify(temArr)) |
| | | res.tempArr = temArr |
| | | } |
| | | |
| | | /**å¹²ç¥è¿ç¨è¶å¿ */ |
| | | if (moisChart) { |
| | | //console.log(`output->æ´æ°chart`) |
| | | moisChart.setOption({ |
| | | series: [ |
| | | { |
| | | data: res.moisList, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'ç®æ ', |
| | | yAxis: res.target, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}%', |
| | | color: '#fff', |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | color: '#fff' |
| | | }, |
| | | } }, |
| | | { data: zhengQiXiaoHao }, |
| | | { data: dianNengXiaoHao }], |
| | | }, |
| | | { |
| | | data: res.tempArr, |
| | | }, |
| | | ], |
| | | }) |
| | | } |
| | | |
| | | res.moisList.push([res.dryTime, res.trendVo.moisture]) |
| | | } |
| | | |
| | | /**温度è¶å¿ */ |
| | | if (res && res.bellowsTemp) { |
| | | Array.from(Object.entries(res.bellowsTemp)) |
| | | var arr = Object.keys(res.bellowsTemp) |
| | | var temArr = [] |
| | | arr.forEach((item) => { |
| | | temArr.push([item * 1, res.bellowsTemp[item]]) |
| | | }) |
| | | |
| | | //console.log(`output->arr` + JSON.stringify(temArr)) |
| | | res.tempArr = temArr |
| | | } |
| | | |
| | | /**å¹²ç¥è¿ç¨è¶å¿ */ |
| | | if (moisChart) { |
| | | //console.log(`output->æ´æ°chart`) |
| | | moisChart.setOption({ |
| | | series: [ |
| | | { |
| | | data: res.moisList, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'ç®æ ', |
| | | yAxis: res.target, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}%', |
| | | color: '#fff' |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | data: res.tempArr, |
| | | }, |
| | | ], |
| | | }) |
| | | } |
| | | |
| | | /**æç对æ¯å¾ */ |
| | | if( (res.originWeight - res.yield) <= 0) { |
| | | res.xiaolv = standard.value.xiaolv + 6 |
| | | } else { |
| | | res.xiaolv = (((res.originWeight - res.yield) / res.dryTime) * 60).toFixed(2) |
| | | } |
| | | |
| | | if (res.xiaolv > standard.value.xiaolv) { |
| | | res.xlgood = true |
| | | res.xlsHeight = (standard.value.xiaolv / res.xiaolv) * 100 + '%' |
| | | res.xlrHeight = '100%' |
| | | } else if (res.xiaolv < standard.value.xlMin) { |
| | | res.xlbad = true |
| | | res.xlsHeight = '100%' |
| | | res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%' |
| | | } else { |
| | | res.xlsHeight = '100%' |
| | | res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%' |
| | | } |
| | | |
| | | |
| | | |
| | | /** è¸æ±½æ¶è */ |
| | | if( (res.originWeight - res.yield) <= 0) { |
| | | res.zhengqi = standard.value.zhengqi -3 |
| | | } else { |
| | | res.zhengqi = (res.steam / (res.originWeight - res.yield)).toFixed(1) |
| | | } |
| | | //console.log('zhengqi:', res.zhengqi); |
| | | if (res.zhengqi > standard.value.zhengqi) { |
| | | res.zqbad = true |
| | | res.zqsHeight = (standard.value.zhengqi / res.zhengqi) * 100 + '%' |
| | | res.zqrHeight = '100%' |
| | | } else if (res.zhengqi < standard.value.zqMin) { |
| | | res.zqgood = true |
| | | res.zqsHeight = '100%' |
| | | res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%' |
| | | } else { |
| | | res.zqsHeight = '100%' |
| | | res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%' |
| | | } |
| | | |
| | | |
| | | |
| | | /** çµè½æ¶è */ |
| | | if( (res.originWeight - res.yield) <= 0) { |
| | | res.dian = standard.value.dian -1.5 |
| | | } else { |
| | | res.dian = (res.watt / (res.originWeight - res.yield)).toFixed(1) |
| | | } |
| | | |
| | | if (res.dian > standard.value.dian) { |
| | | res.dnbad = true |
| | | res.dnsHeight = (standard.value.dian / res.dian) * 100 + '%' |
| | | res.dnrHeight = '100%' |
| | | } else if (res.dian < standard.value.dMin) { |
| | | |
| | | res.dngood = true |
| | | res.dnsHeight = '100%' |
| | | res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%' |
| | | } else { |
| | | res.dnsHeight = '100%' |
| | | res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%' |
| | | } |
| | | |
| | | console.log("state:::fan::", res.state_fan,"roller::", res.state_roller,"windbox::", res.state_windbox); |
| | | console.log("==========================="); |
| | | //console.log("state:::state_windbox::", res.state_windbox); |
| | | |
| | | /**ç¶æ/gifå¨å¾ */ |
| | | if (!shangliaoFlag) { |
| | | if (res.orderStatus == 0) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'åå¤' |
| | | } else if (res.orderStatus == 1) { |
| | | shangliaoFlag = true |
| | | statusGif = 'kaimen1' |
| | | statusTxt = '䏿' |
| | | setTimeout(chaiwangban,4000) |
| | | } else if (res.orderStatus == 2) { |
| | | if(res.state_fan == 1) { |
| | | statusGif = 'tmrefeng2' |
| | | statusTxt = 'æ£å¨å¹²ç¥' |
| | | /**æç对æ¯å¾ */ |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.xiaolv = standard.value.xiaolv + 6 |
| | | } else { |
| | | res.xiaolv = (((res.originWeight - res.yield) / res.dryTime) * 60).toFixed(2) |
| | | } |
| | | |
| | | if(res.state_roller == 4) { |
| | | statusGif = 'fanliao-N' |
| | | statusTxt = 'æ£å¨ç¿»æ' |
| | | if (res.xiaolv > standard.value.xiaolv) { |
| | | res.xlgood = true |
| | | res.xlsHeight = (standard.value.xiaolv / res.xiaolv) * 100 + '%' |
| | | res.xlrHeight = '100%' |
| | | } else if (res.xiaolv < standard.value.xlMin) { |
| | | res.xlbad = true |
| | | res.xlsHeight = '100%' |
| | | res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%' |
| | | } else { |
| | | res.xlsHeight = '100%' |
| | | res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%' |
| | | } |
| | | |
| | | if (res.state_roller == 5) { |
| | | statusGif = 'chuliao-N' |
| | | statusTxt = 'æ£å¨åºæ' |
| | | /** è¸æ±½æ¶è */ |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.zhengqi = standard.value.zhengqi - 3 |
| | | } else { |
| | | res.zhengqi = (res.steam / (res.originWeight - res.yield)).toFixed(1) |
| | | } |
| | | |
| | | if (res.state_windbox == 2 || res.state_windbox == 3) { |
| | | statusGif = 'fengxiangsheng-1' |
| | | statusTxt = 'æ£å¨å¹²ç¥' |
| | | //console.log('zhengqi:', res.zhengqi); |
| | | if (res.zhengqi > standard.value.zhengqi) { |
| | | res.zqbad = true |
| | | res.zqsHeight = (standard.value.zhengqi / res.zhengqi) * 100 + '%' |
| | | res.zqrHeight = '100%' |
| | | } else if (res.zhengqi < standard.value.zqMin) { |
| | | res.zqgood = true |
| | | res.zqsHeight = '100%' |
| | | res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%' |
| | | } else { |
| | | res.zqsHeight = '100%' |
| | | res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%' |
| | | } |
| | | } else if(res.orderStatus == 3) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'æå' |
| | | } else if(res.orderStatus == 4) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'å¹²ç¥å®æ' |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | if (compareChart) { |
| | | compareChart.setOption({ |
| | | yAxis: { |
| | | data: res.compEqpNum |
| | | }, |
| | | series: { |
| | | data: res.compEqpEffic |
| | | /** çµè½æ¶è */ |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.dian = standard.value.dian - 1.5 |
| | | } else { |
| | | res.dian = (res.watt / (res.originWeight - res.yield)).toFixed(1) |
| | | } |
| | | |
| | | if (res.dian > standard.value.dian) { |
| | | res.dnbad = true |
| | | res.dnsHeight = (standard.value.dian / res.dian) * 100 + '%' |
| | | res.dnrHeight = '100%' |
| | | } else if (res.dian < standard.value.dMin) { |
| | | res.dngood = true |
| | | res.dnsHeight = '100%' |
| | | res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%' |
| | | } else { |
| | | res.dnsHeight = '100%' |
| | | res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%' |
| | | } |
| | | |
| | | //console.log('state:::fan::', res.state_fan, 'roller::', res.state_roller, 'windbox::', res.state_windbox) |
| | | //console.log('===========================') |
| | | //console.log("state:::state_windbox::", res.state_windbox); |
| | | |
| | | /**ç¶æ/gifå¨å¾ */ |
| | | if (!shangliaoFlag) { |
| | | if (res.orderStatus == 0) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'åå¤' |
| | | } else if (res.orderStatus == 1) { |
| | | shangliaoFlag = true |
| | | statusGif = 'kaimen1' |
| | | statusTxt = '䏿' |
| | | setTimeout(chaiwangban, 4000) |
| | | } else if (res.orderStatus == 2) { |
| | | if (res.state_fan == 1) { |
| | | statusGif = 'tmrefeng2' |
| | | 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 = 'æå' |
| | | } else if (res.orderStatus == 4) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'å¹²ç¥å®æ' |
| | | } |
| | | }) |
| | | } |
| | | |
| | | if (compareChart) { |
| | | compareChart.setOption({ |
| | | yAxis: { |
| | | data: res.compEqpNum, |
| | | }, |
| | | series: { |
| | | data: res.compEqpEffic, |
| | | }, |
| | | }) |
| | | } |
| | | |
| | | res.herbImage = 'yaocai1.png' |
| | | |
| | | if (res.herbName == 'ç½è±èèè') { |
| | | res.herbImage = 'baihuasheshecao.png' |
| | | } else if (res.herbName == 'ç³¥ç¨»æ ¹') { |
| | | res.herbImage = 'nuodaogen.png' |
| | | } else if (res.herbName == 'æ·«ç¾è¿') { |
| | | res.herbImage = 'yinyanghuo.png' |
| | | } else if (res.herbName == '马齿è') { |
| | | res.herbImage = 'machixian.png' |
| | | } else if (res.herbName == '墨æ±è²') { |
| | | res.herbImage = 'mohanlian.png' |
| | | } else if (res.herbName == 'æ¡ç½ç®') { |
| | | res.herbImage = 'sangbaipi.png' |
| | | } |
| | | res.isError = false |
| | | |
| | | res.errorMsg = 'æä¸ä¸ªæ
éï¼è¯·æ£æ¥ã' |
| | | } else { |
| | | res = { |
| | | mois: [], |
| | | gif: 'tmrefeng2', |
| | | herbImage: 'yaocai1.png', |
| | | } |
| | | } |
| | | |
| | | res.herbImage = 'yaocai1.png' |
| | | |
| | | if (res.herbName == 'ç½è±èèè') { |
| | | res.herbImage = 'baihuasheshecao.png' |
| | | } else if (res.herbName == 'ç³¥ç¨»æ ¹') { |
| | | res.herbImage = 'nuodaogen.png' |
| | | } else if (res.herbName == 'æ·«ç¾è¿') { |
| | | res.herbImage = 'yinyanghuo.png' |
| | | } else if (res.herbName == '马齿è') { |
| | | res.herbImage = 'machixian.png' |
| | | } else if (res.herbName == '墨æ±è²') { |
| | | res.herbImage = 'mohanlian.png' |
| | | } else if (res.herbName == 'æ¡ç½ç®') { |
| | | res.herbImage = 'sangbaipi.png' |
| | | } |
| | | res.isError = false |
| | | |
| | | res.errorMsg = 'æä¸ä¸ªæ
éï¼è¯·æ£æ¥ã' |
| | | } else { |
| | | res = { |
| | | mois: [], |
| | | gif: 'tmrefeng2', |
| | | herbImage: 'yaocai1.png' |
| | | } |
| | | } |
| | | |
| | | //console.log(`output->res`, res) |
| | | realData.value = res |
| | | }) |
| | | } |
| | | //console.log(`output->res`, res) |
| | | realData.value = res |
| | | }) |
| | | } |
| | | } |
| | | |
| | | var move = true; |
| | | function moveImage() { |
| | | |
| | | if (move) { |
| | | position.value -= 0.3 |
| | | } else { |
| | | position.value += 0.3 |
| | | } |
| | | if(position.value < -240 ) { |
| | | move = false |
| | | } |
| | | if (position.value > -1) { |
| | | move = true |
| | | } |
| | | var move = true |
| | | function moveImage() { |
| | | if (move) { |
| | | position.value -= 0.3 |
| | | } else { |
| | | position.value += 0.3 |
| | | } |
| | | if (position.value < -240) { |
| | | move = false |
| | | } |
| | | if (position.value > -1) { |
| | | move = true |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | function back() { |
| | | router.back() |
| | | } |
| | | |
| | | listAllEqp() |
| | | listAllEqp() |
| | | //queryEqp() |
| | | // DOMæè½½å®æå渲æå¾è¡¨ |
| | | onMounted(() => { |
| | | Timer.value = setInterval(queryRealTime, 3000) |
| | | Timer2.value = setInterval(moveImage, 50) |
| | | Timer2.value = setInterval(moveImage, 50) |
| | | }) |
| | | |
| | | onUnmounted(() => { |
| | | clearInterval(Timer.value) |
| | | clearInterval(Timer2.value) |
| | | clearInterval(Timer2.value) |
| | | Timer.value = null |
| | | Timer2.value = null |
| | | Timer2.value = null |
| | | }) |
| | | </script> |
| | | |
| | |
| | | .eqpImage { |
| | | height: 1080px; |
| | | width: 1920px; |
| | | background-image: url(/src/assets/images/dry/bg.png); |
| | | background-image: url(/src/assets/images/dry/bg.png); |
| | | background-repeat: no-repeat; |
| | | color: white; |
| | | color: white; |
| | | /*background-position: 160px 280px; */ |
| | | /* background-color: red; */ |
| | | background-size: 120%; |
| | | background-size: 120%; |
| | | padding: 10px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | |
| | | width: 1200px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-content: flex-start; |
| | | |
| | | align-content: flex-start; |
| | | |
| | | /* background-color: white; |
| | | background-image: url(/src/assets/images/dry/shebei1.png); |
| | | background-repeat: no-repeat; |
| | |
| | | |
| | | .leftTop { |
| | | height: 750px; |
| | | width: 850px; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-content: flex-start; |
| | | background-image: url(/src/assets/images/dry/ganzaoji-x.png); |
| | | background-repeat: no-repeat; |
| | | background-size: 79%; |
| | | border-radius: 10px; |
| | | flex-wrap: wrap; |
| | | background-position: 85px 279px; |
| | | |
| | | width: 850px; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-content: flex-start; |
| | | background-image: url(/src/assets/images/dry/ganzaoji-x.png); |
| | | background-repeat: no-repeat; |
| | | background-size: 79%; |
| | | border-radius: 10px; |
| | | flex-wrap: wrap; |
| | | background-position: 85px 279px; |
| | | } |
| | | .leftMid { |
| | | |
| | | width: 850px; |
| | | height: 300px; |
| | | /* border: 1px solid; */ |
| | | margin-top: 10px; |
| | | margin-top: 10px; |
| | | border-radius: 10px; |
| | | /* background: white; */ |
| | | } |
| | |
| | | line-height: 33px; |
| | | padding-left: 10px; |
| | | font-size: 30px; |
| | | color: white; |
| | | color: white; |
| | | } |
| | | .subhead { |
| | | color: #a19f9c; |
| | |
| | | align-items: center; |
| | | font-size: 30px; |
| | | color: #727272; |
| | | |
| | | } |
| | | .leftTop2 { |
| | | width: 250px; |
| | |
| | | .curEqp { |
| | | width: 340px; |
| | | height: 170px; |
| | | |
| | | /* background: white; |
| | | border-radius: 10px; */ |
| | | } |
| | |
| | | height: 260px; |
| | | /* background: white; |
| | | border-radius: 10px; */ |
| | | |
| | | |
| | | background-repeat: no-repeat; |
| | | background-size: 200px; |
| | | background-position: 0px 10px; |
| | |
| | | width: 690px; |
| | | height: 440px; |
| | | /* background: white; */ |
| | | |
| | | |
| | | padding: 20px; |
| | | border-radius: 10px; |
| | | } |
| | |
| | | <template> |
| | | <dv-full-screen-container> |
| | | |
| | | </dv-full-screen-container> |
| | | <dv-full-screen-container> |
| | | <div class="fbg"> |
| | | <div class="bgImage"> |
| | | <div class="head"> |
| | | <div style="width: 600px; height: 50px"> <dv-decoration-8 style="width: 500px; height: 50px" /></div> |
| | | |
| | | <div class="title"> |
| | | <span>å
°æµ¦æºè½å¹²ç¥è½¦é´</span> |
| | | |
| | | <dv-decoration-5 :dur="20" style="margin-top: -40px; width: 700px; height: 80px" /> |
| | | </div> |
| | | <div style="width: 600px; height: 50px; display: flex; justify-content: end"> |
| | | <dv-decoration-8 :reverse="true" style="width: 500px; height: 50px" |
| | | /></div> |
| | | </div> |
| | | <div class="body"> |
| | | <div class="humiture"> |
| | | <div style="display: flex; width: 120px"> |
| | | <Icon style="color: #f7b733" icon="solar:temperature-line-duotone" :size="28" /> |
| | | |
| | | <div style="font-size: 20px; line-height: 26px"> 26 â </div> |
| | | </div> |
| | | <div style="display: flex"> |
| | | <Icon style="color: #f7b733" icon="material-symbols:humidity-percentage-outline" :size="28" /> |
| | | |
| | | <div style="font-size: 20px; line-height: 26px"> 53 %rh </div> |
| | | </div> |
| | | </div> |
| | | <div class="up"> |
| | | <div v-for="num in eqpNum" :key="num" :class="{ one: num === 1, two: num === 2, three: num === 3, four: num === 4 }"> |
| | | <div class="eqpInfoup" @click="gotoeqp(num - 1)"> |
| | | <div class="eqp-title"> |
| | | <div class="eqp-name">{{ eqpMap.get(eqpCodes[num - 1])?.name || 'é¢ç' }}</div> |
| | | <!-- <div class="process"> </div> --> |
| | | <Progress |
| | | :stroke-color="{ |
| | | from: '#108ee9', |
| | | to: '#87d068', |
| | | }" |
| | | :percent="parseFloat(realTime.get(eqpCodes[num - 1])?.percent || '0')" |
| | | status="active" |
| | | trailColor="#2b2b2b2b" |
| | | :show-info="false" |
| | | /> |
| | | <!-- <div class="eqp-name">50%</div> --> |
| | | </div> |
| | | <div class="eqp-info-up"> |
| | | <div class="herb">{{ realTime.get(eqpCodes[num - 1])?.herbName || 'ææ ' }}</div> |
| | | </div> |
| | | <div class="water"> |
| | | <div class="temp"> |
| | | <div style="line-height: 28px"><Icon style="color: #2a5a63" icon="ic:twotone-water-drop" :size="28" /> </div> |
| | | <div class="font"> |
| | | <span class="value"> {{ realTime.get(eqpCodes[num - 1])?.trendVo.moisture || '0' }}</span> % |
| | | </div> |
| | | </div> |
| | | <div class="temp"> |
| | | <div style="line-height: 28px"><Icon style="color: #6c5b7b" icon="solar:temperature-bold-duotone" :size="30" /> </div> |
| | | <div class="font"> |
| | | <span class="value">{{ realTime.get(eqpCodes[num - 1])?.trendVo.bellowsTemp || '0' }} </span> â |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="down"> |
| | | <div v-for="num in eqpNum" :key="num" :class="{ one: num === 1, two: num === 2, three: num === 3, four: num === 4 }"> |
| | | <div class="eqpInfodown" @click="gotoeqp(num + 3)"> |
| | | <div class="eqp-info-down"> |
| | | <div class="herb">{{ realTime.get(eqpCodes[num + 3])?.herbName || 'ææ ' }}</div> |
| | | </div> |
| | | <div class="water"> |
| | | <div class="temp"> |
| | | <div style="line-height: 28px"> |
| | | <Icon style="color: #2a5a63" icon="ic:twotone-water-drop" :size="28" /> |
| | | </div> |
| | | <div class="font"> |
| | | <span class="value">{{ realTime.get(eqpCodes[num + 3])?.trendVo.moisture || '0' }}</span> % |
| | | </div> |
| | | </div> |
| | | <div class="temp"> |
| | | <div style="line-height: 28px"><Icon style="color: #6c5b7b" icon="solar:temperature-bold-duotone" :size="30" /> </div> |
| | | <div class="font"> |
| | | <span class="value">{{ realTime.get(eqpCodes[num + 3])?.trendVo.bellowsTemp || '0' }}</span> â |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div style="height: 70px"></div> |
| | | <div class="eqp-title"> |
| | | <!-- <div class="process"> </div> --> |
| | | <Progress |
| | | :stroke-color="{ |
| | | from: '#108ee9', |
| | | to: '#87d068', |
| | | }" |
| | | :percent="parseFloat(realTime.get(eqpCodes[num + 3])?.percent || '0')" |
| | | status="active" |
| | | trailColor="#2b2b2b2b" |
| | | :show-info="false" |
| | | /> |
| | | <!-- <div class="eqp-name">50%</div> --> |
| | | <div class="eqp-name-down">{{ eqpMap.get(eqpCodes[num + 3])?.name || 'é¢ç' }}</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </dv-full-screen-container> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { Progress } from 'ant-design-vue' |
| | | import { onMounted, ref, onUnmounted } from 'vue' |
| | | import { Icon, IconPicker, SvgIcon } from '/@/components/Icon/index' |
| | | import { listAll } from '../api/DryEquipment.api' |
| | | import { dryEquipment } from '../dataDefine/DryEquipment.data' |
| | | import { router } from '/@/router' |
| | | import { defHttp } from '/@/utils/http/axios' |
| | | import { useUserStore } from '/@/store/modules/user' |
| | | const eqpNum = ref(4) |
| | | const eqpMap = ref(new Map()) |
| | | const eqpCodes = ref(['GM001', 'GM002', 'GM003', 'GM004', 'GM005', 'GM006']) |
| | | const eqps = ref([] as dryEquipment[]) |
| | | |
| | | const userStore = useUserStore() |
| | | const Timer = ref() |
| | | |
| | | const realTime = ref(new Map()) |
| | | |
| | | function listAllEqp() { |
| | | listAll({ enable: 'Y' }) |
| | | .then((result) => { |
| | | //console.log(`output->result`, result) |
| | | eqps.value = result |
| | | |
| | | result.forEach((item) => { |
| | | eqpMap.value.set(item.code, item) |
| | | }) |
| | | updateRealTime() |
| | | }) |
| | | .catch((err) => { |
| | | console.log(`output->err`, err) |
| | | }) |
| | | } |
| | | |
| | | function updateRealTime() { |
| | | //console.log(`output->宿¶å·æ°æ°æ®`) |
| | | eqps.value.forEach((item) => { |
| | | queryRealTime(item) |
| | | }) |
| | | } |
| | | |
| | | function queryRealTime(eqp: dryEquipment) { |
| | | let tenantId = userStore.getTenant |
| | | let eqpCode = eqp.code |
| | | let queryRealTimeUrl = '/dry/real/getRealTimeData' |
| | | defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenantId, machineid: eqpCode } }).then((res) => { |
| | | //console.log(`output->res`, res) |
| | | if (res && res.trendVo) { |
| | | res.tempValue = [res.windTemp, 100] |
| | | res.percent = ((res.dryTime / (res.dryTime + res.remain)) * 100).toFixed(2) |
| | | } else { |
| | | res = { |
| | | tempValue: [0, 100], |
| | | percent: 0, |
| | | mois: [], |
| | | } |
| | | } |
| | | |
| | | realTime.value.set(eqp.code, res) |
| | | }) |
| | | } |
| | | function gotoeqp(num) { |
| | | if (num < eqpCodes.value.length) { |
| | | router.push({ path: '/bigEqp', query: { num: num } }) |
| | | } |
| | | } |
| | | |
| | | listAllEqp() |
| | | onMounted(() => { |
| | | Timer.value = setInterval(updateRealTime, 3000) |
| | | }) |
| | | |
| | | onUnmounted(() => { |
| | | clearInterval(Timer.value) |
| | | Timer.value = null |
| | | }) |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .fbg { |
| | | height: 1080px; |
| | | width: 1920px; |
| | | background-image: url(/src/assets/images/dry/bg/bg5.png); |
| | | background-repeat: no-repeat; |
| | | } |
| | | .bgImage { |
| | | height: 1080px; |
| | | width: 1920px; |
| | | background-image: url(/src/assets/images/dry/bg/wksp2.png); |
| | | background-repeat: no-repeat; |
| | | background-size: 100%; |
| | | background-position: 0% 50%; |
| | | } |
| | | |
| | | </style> |
| | | .head { |
| | | display: flex; |
| | | align-content: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .body { |
| | | height: 980px; |
| | | width: 100%; |
| | | margin-top: -100px; |
| | | font-size: 20px; |
| | | } |
| | | .title { |
| | | height: 200px; |
| | | padding: 20px; |
| | | font-size: 30px; |
| | | font-weight: bold; |
| | | text-align: center; |
| | | color: white; |
| | | } |
| | | |
| | | .humiture { |
| | | height: 0px; |
| | | justify-content: center; |
| | | color: white; |
| | | display: flex; |
| | | } |
| | | |
| | | .up { |
| | | padding-left: 100px; |
| | | padding-top: 00px; |
| | | display: flex; |
| | | |
| | | align-content: center; |
| | | justify-content: flex-start; |
| | | } |
| | | .down { |
| | | padding-left: 392px; |
| | | margin-top: -334px; |
| | | display: flex; |
| | | |
| | | align-content: center; |
| | | justify-content: flex-start; |
| | | } |
| | | .eqpInfoup { |
| | | width: 280px; |
| | | height: 300px; |
| | | margin: 0 41px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | } |
| | | |
| | | .eqpInfodown { |
| | | width: 280px; |
| | | height: 300px; |
| | | margin: 0 41px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: flex-start; |
| | | } |
| | | |
| | | .one { |
| | | margin-top: 280px; |
| | | } |
| | | |
| | | .two { |
| | | margin-top: 220px; |
| | | } |
| | | |
| | | .three { |
| | | margin-top: 160px; |
| | | } |
| | | |
| | | .four { |
| | | margin-top: 100px; |
| | | } |
| | | |
| | | .eqp-title { |
| | | height: 30px; |
| | | border-radius: 20px; |
| | | /* background: rgb(182, 182, 182); |
| | | border: 1px solid green; */ |
| | | width: 100%; |
| | | } |
| | | |
| | | .eqp-name { |
| | | line-height: 30px; |
| | | text-align: center; |
| | | color: white; |
| | | margin-top: -30px; |
| | | } |
| | | |
| | | .eqp-name-down { |
| | | line-height: 40px; |
| | | text-align: center; |
| | | color: white; |
| | | } |
| | | |
| | | .process { |
| | | width: 50%; |
| | | height: 100%; |
| | | overflow: hidden; |
| | | border-radius: 20px; |
| | | background: #3f4c6b; |
| | | } |
| | | |
| | | .eqp-info-up { |
| | | flex: 1; |
| | | padding-top: 120px; |
| | | display: flex; |
| | | } |
| | | |
| | | .eqp-info-down { |
| | | flex: 1; |
| | | padding-top: 50px; |
| | | display: flex; |
| | | } |
| | | |
| | | .herb { |
| | | height: 30px; |
| | | background: #3f4c6b; |
| | | color: white; |
| | | line-height: 30px; |
| | | padding: 0 10px; |
| | | } |
| | | .water { |
| | | height: 120px; |
| | | width: 110px; |
| | | margin-left: 170px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | align-content: space-evenly; |
| | | } |
| | | |
| | | .temp { |
| | | display: flex; |
| | | } |
| | | .font { |
| | | line-height: 26px; |
| | | } |
| | | |
| | | .value { |
| | | } |
| | | :deep() .progress { |
| | | padding: 25px 25px; |
| | | |
| | | width: 360px; |
| | | display: flex; |
| | | } |
| | | :deep() .ant-progress-bg { |
| | | height: 25px !important; |
| | | } |
| | | :deep() .ant-progress-inner { |
| | | background-color: rgb(197 197 197 / 52%) !important; |
| | | } |
| | | </style> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <iframe :src="reportUrl" style="width: 100%; height: 100%"></iframe> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { onMounted, ref } from 'vue' |
| | | import { router } from '/@/router' |
| | | console.log(`output->router1`, router) |
| | | const reportUrl = ref('') |
| | | reportUrl.value = window._CONFIG['domianURL'] + '/jmreport/view/833110227445567488?batch=' + router.currentRoute.value.query.batch |
| | | //reportUrl.value = 'www.baidu.com' |
| | | console.log(`output->reportUrl.value`, reportUrl.value) |
| | | // onMounted(() => { |
| | | // console.log(`output->router`, router) |
| | | // }) |
| | | </script> |
| | | |
| | | <style></style> |
| | |
| | | import { BasicColumn, FormSchema } from '/@/components/Table'; |
| | | import { rules } from '/@/utils/helper/validator'; |
| | | import { BasicColumn, FormSchema } from '/@/components/Table' |
| | | import { rules } from '/@/utils/helper/validator' |
| | | //åè¡¨æ°æ® |
| | | export const columns: BasicColumn[] = [ |
| | | { |
| | | title: 'code', |
| | | align: 'center', |
| | | dataIndex: 'code', |
| | | }, |
| | | { |
| | | title: 'name', |
| | | align: 'center', |
| | | dataIndex: 'name', |
| | | }, |
| | | ]; |
| | | { |
| | | title: 'ç¼ç ', |
| | | align: 'center', |
| | | dataIndex: 'code', |
| | | }, |
| | | { |
| | | title: 'åç§°', |
| | | align: 'center', |
| | | dataIndex: 'name', |
| | | }, |
| | | ] |
| | | //æ¥è¯¢æ°æ® |
| | | export const searchFormSchema: FormSchema[] = [ |
| | | { |
| | | label: 'code', |
| | | field: 'code', |
| | | component: 'Input', |
| | | colProps: { span: 6 }, |
| | | }, |
| | | { |
| | | label: 'name', |
| | | field: 'name', |
| | | component: 'Input', |
| | | colProps: { span: 6 }, |
| | | }, |
| | | ]; |
| | | { |
| | | label: 'ç¼ç ', |
| | | field: 'code', |
| | | component: 'Input', |
| | | colProps: { span: 6 }, |
| | | }, |
| | | { |
| | | label: 'åç§°', |
| | | field: 'name', |
| | | component: 'Input', |
| | | colProps: { span: 6 }, |
| | | }, |
| | | ] |
| | | //è¡¨åæ°æ® |
| | | export const formSchema: FormSchema[] = [ |
| | | { |
| | | label: 'code', |
| | | field: 'code', |
| | | component: 'Input', |
| | | dynamicRules: ({ model, schema }) => { |
| | | return [{ required: true, message: '请è¾å
¥code!' }, { ...rules.duplicateCheckRule('dry_eqp_type', 'code', model, schema)[0] }]; |
| | | }, |
| | | }, |
| | | { |
| | | label: 'name', |
| | | field: 'name', |
| | | component: 'Input', |
| | | dynamicRules: ({ model, schema }) => { |
| | | return [{ required: true, message: '请è¾å
¥name!' }, { ...rules.duplicateCheckRule('dry_eqp_type', 'name', model, schema)[0] }]; |
| | | }, |
| | | }, |
| | | // TODO 主é®éèåæ®µï¼ç®ååæ»ä¸ºID |
| | | { |
| | | label: '', |
| | | field: 'id', |
| | | component: 'Input', |
| | | show: false, |
| | | }, |
| | | ]; |
| | | { |
| | | label: 'ç¼ç ', |
| | | field: 'code', |
| | | component: 'Input', |
| | | dynamicRules: ({ model, schema }) => { |
| | | return [{ required: true, message: '请è¾å
¥ç¼ç !' }, { ...rules.duplicateCheckRule('dry_eqp_type', 'code', model, schema)[0] }] |
| | | }, |
| | | }, |
| | | { |
| | | label: 'åç§°', |
| | | field: 'name', |
| | | component: 'Input', |
| | | dynamicRules: ({ model, schema }) => { |
| | | return [{ required: true, message: '请è¾å
¥åç§°!' }, { ...rules.duplicateCheckRule('dry_eqp_type', 'name', model, schema)[0] }] |
| | | }, |
| | | }, |
| | | // TODO 主é®éèåæ®µï¼ç®ååæ»ä¸ºID |
| | | { |
| | | label: '', |
| | | field: 'id', |
| | | component: 'Input', |
| | | show: false, |
| | | }, |
| | | ] |
| | | |
| | | /** |
| | | * æµç¨è¡¨åè°ç¨è¿ä¸ªæ¹æ³è·åformSchema |
| | | * @param param |
| | | */ |
| | | export function getBpmFormSchema(_formData): FormSchema[] { |
| | | // é»è®¤ååå§è¡¨åä¿æä¸è´ 妿æµç¨ä¸é
ç½®äºæéæ°æ®ï¼è¿ééè¦åç¬å¤çformSchema |
| | | return formSchema; |
| | | // é»è®¤ååå§è¡¨åä¿æä¸è´ 妿æµç¨ä¸é
ç½®äºæéæ°æ®ï¼è¿ééè¦åç¬å¤çformSchema |
| | | return formSchema |
| | | } |
| | |
| | | dataIndex: 'herbId_dictText', |
| | | }, |
| | | { |
| | | title: '设å¤', |
| | | align: 'center', |
| | | dataIndex: 'equId_dictText', |
| | | }, |
| | | { |
| | | title: '车é´', |
| | | align: 'center', |
| | | dataIndex: 'shopId_dictText', |
| | | }, |
| | | { |
| | | title: 'åå§å«æ°´ç', |
| | | align: 'center', |
| | | dataIndex: 'initial', |
| | |
| | | align: 'center', |
| | | dataIndex: 'remain', |
| | | }, |
| | | { |
| | | title: '设å¤', |
| | | align: 'center', |
| | | dataIndex: 'equId_dictText', |
| | | }, |
| | | { |
| | | title: '车é´', |
| | | align: 'center', |
| | | dataIndex: 'shopId_dictText', |
| | | }, |
| | | |
| | | { |
| | | title: 'å·¥åç¶æ', |
| | | align: 'center', |
| | |
| | | dictCode: 'dry_herb,name,id,tenant_id=' + getTenantId(), |
| | | }, |
| | | }, |
| | | { |
| | | label: 'åå§å«æ°´ç', |
| | | field: 'initial', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'ç®æ 嫿°´ç', |
| | | field: 'target', |
| | | component: 'InputNumber', |
| | | }, |
| | | // { |
| | | // label: 'åå§å«æ°´ç', |
| | | // field: 'initial', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'ç®æ 嫿°´ç', |
| | | // field: 'target', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | { |
| | | label: 'ææé', |
| | | field: 'feed', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'åå§éé', |
| | | field: 'originWeight', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'é¢è®¡å¹²ç¥æ¶é´', |
| | | field: 'et', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'å¹²æéé', |
| | | field: 'yield', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'å¹²ç¥æ¶é´', |
| | | field: 'dryTime', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'ç飿¸©åº¦', |
| | | field: 'windTemp', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'ç¯å¢æ¸©åº¦', |
| | | field: 'envTemp', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'ç¯å¢æ¹¿åº¦', |
| | | field: 'envHum', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'è¡æå»¶æ¶ï¼msï¼', |
| | | field: 'delay', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'ç¿»ææ¬¡æ°', |
| | | field: 'turn', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'é¢è®¡å©ä½æ¶é´', |
| | | field: 'remain', |
| | | component: 'InputNumber', |
| | | }, |
| | | // { |
| | | // label: 'åå§éé', |
| | | // field: 'originWeight', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'é¢è®¡å¹²ç¥æ¶é´', |
| | | // field: 'et', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'å¹²æéé', |
| | | // field: 'yield', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'å¹²ç¥æ¶é´', |
| | | // field: 'dryTime', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'ç飿¸©åº¦', |
| | | // field: 'windTemp', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'ç¯å¢æ¸©åº¦', |
| | | // field: 'envTemp', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'ç¯å¢æ¹¿åº¦', |
| | | // field: 'envHum', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'è¡æå»¶æ¶ï¼msï¼', |
| | | // field: 'delay', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'ç¿»ææ¬¡æ°', |
| | | // field: 'turn', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'é¢è®¡å©ä½æ¶é´', |
| | | // field: 'remain', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | { |
| | | label: '设å¤', |
| | | field: 'equId', |
| | |
| | | dictCode: 'dry_shop,name,id,tenant_id=' + getTenantId(), |
| | | }, |
| | | }, |
| | | { |
| | | label: 'å·¥åç¶æ', |
| | | field: 'orderStatus', |
| | | component: 'InputNumber', |
| | | }, |
| | | { |
| | | label: 'æä½äºº', |
| | | field: 'operator', |
| | | component: 'JDictSelectTag', |
| | | componentProps: { |
| | | dictCode: 'sys_user,realname,id,tenant_id=' + getTenantId(), |
| | | }, |
| | | }, |
| | | // { |
| | | // label: 'å·¥åç¶æ', |
| | | // field: 'orderStatus', |
| | | // component: 'InputNumber', |
| | | // }, |
| | | // { |
| | | // label: 'æä½äºº', |
| | | // field: 'operator', |
| | | // component: 'JDictSelectTag', |
| | | // componentProps: { |
| | | // dictCode: 'sys_user,realname,id,tenant_id=' + getTenantId(), |
| | | // }, |
| | | // }, |
| | | // TODO 主é®éèåæ®µï¼ç®ååæ»ä¸ºID |
| | | { |
| | | label: '', |
| | |
| | | <template> |
| | | <div class="eqpBox"> |
| | | <div class="eqpBox"> |
| | | <div class="eqpRow"> |
| | | <div class="eqpImage" > |
| | | |
| | | <div class="eqpImage"> |
| | | <div class="leftEqp"> |
| | | <div style="width: 300px; "> |
| | | <div class="herbInfo"> |
| | | |
| | | <div style="width: 300px"> |
| | | <div class="herbInfo"> |
| | | <dv-border-box7 class="curEqp"> |
| | | <div class="eqpName" @click="changeEqp"> |
| | | <div class="eqpName" @click="changeEqp"> |
| | | <div class="mainInfo" style="font-size: 26px">{{ eqp?.name }}</div> |
| | | <div class="subhead">{{ eqp?.type }}</div> |
| | | <!-- <dv-decoration-1 style="width:150px;height:60px; margin-left: 20px;" /> --> |
| | |
| | | <div class="eqpName">åå·ï¼{{ eqp.type }}</div> --> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="curHerb" :style="{'background-image': 'url(/src/assets/images/dry/yaocai/'+realData?.herbImage+')'}"> |
| | | <dv-border-box7 class="curHerb" :style="{ 'background-image': 'url(/src/assets/images/dry/yaocai/' + realData?.herbImage + ')' }"> |
| | | <div class="eqpName" style="margin-left: 100px"> |
| | | <div class="mainInfo" style="font-size: 26px">{{ realData?.herbName }}</div> |
| | | <div class="subhead">å¹²ç¥é
æ¹</div> |
| | | </div> |
| | | <div class="formula"> |
| | | <div class="formulaItem"> |
| | | <Icon style="color: powderblue" icon="icon-park-twotone:box" :size="35" /> |
| | | <Icon style="color: powderblue" icon="icon-park-twotone:box" :size="35" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.feed }}ç</div> |
| | | <div class="subhead2">ææé</div> |
| | | </div> |
| | | </div> |
| | | <div class="formulaItem"> |
| | | <Icon style="color: red" icon="bx:wind" :size="35" /> |
| | | <Icon style="color: red" icon="bx:wind" :size="35" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.windTemp }}°C</div> |
| | | <div class="subhead2">çé£</div> |
| | | </div> |
| | | </div> |
| | | <div class="formulaItem"> |
| | | <Icon style="color: green" icon="tabler:target-arrow" :size="35" /> |
| | | <Icon style="color: green" icon="tabler:target-arrow" :size="35" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.target }}%</div> |
| | | <div class="subhead2">ç®æ </div> |
| | |
| | | <div id="fanFreq" style="width: 220px; height: 200px"></div> |
| | | </div> |
| | | </dv-border-box7> --> |
| | | <dv-border-box7 class="infoChart" style="margin-left: 0px;"> |
| | | <dv-border-box7 class="infoChart" style="margin-left: 0px"> |
| | | <div class="chartTittle">嫿°´ç</div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | | <div class="leftData"> |
| | |
| | | </div> |
| | | <div class="subhead2" style="margin-top: -37px; padding-left: 172px">宿¶å«æ°´ç</div> |
| | | </dv-border-box7> |
| | | </div> |
| | | <dv-border-box7 class="leftTop"> |
| | | |
| | | <div class="leftTop0"> |
| | | <div class="leftTop1"> |
| | | <Icon icon="emojione:hourglass-with-flowing-sand" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData?.totalRemain | 0 }}min</div> |
| | | <div class="subhead">å©ä½æ¶é´</div> |
| | | </div> |
| | | </div> |
| | | <div class="leftTop1"> |
| | | <Icon icon="bi:fan" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData.trendVo?.fanFrequency | 0 }} Hz</div> |
| | | <div class="subhead">飿ºé¢ç</div> |
| | | </div> |
| | | </div> |
| | | <div class="leftTop3" :style="{ 'background-image': 'url(/src/assets/images/dry/' + statusGif + '.gif)' }"></div> |
| | | <div class="outDiv eqpStatus"> |
| | | <div |
| | | style=" |
| | | font-size: 28px; |
| | | margin-top: 60px; |
| | | color: white; |
| | | background-color: #1595ea; |
| | | height: 60px; |
| | | width: 180px; |
| | | line-height: 60px; |
| | | text-align: center; |
| | | border-radius: 5px; |
| | | font-weight: bold; |
| | | " |
| | | > |
| | | {{ statusTxt }} |
| | | </div> |
| | | <div v-if="realData?.isError" |
| | | class="eqpInfoText blingbling" |
| | | style=" |
| | | position: absolute; |
| | | |
| | | max-height: 130px; |
| | | max-width: 360px; |
| | | 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> |
| | | </div> |
| | | </dv-border-box7> |
| | | |
| | | <dv-border-box7 class="infoChart" style="margin-left: 0px; margin-right: 10px;"> |
| | | <div class="chartTittle">é£ç®±æ¸©åº¦</div> |
| | | <div class="outDiv"> |
| | | <div id="bellowsTemp" style="width: 220px; height: 200px"> |
| | | <Icon icon="emojione:hourglass-with-flowing-sand" :size="50" /> |
| | | <dv-border-box7 class="leftTop"> |
| | | <div class="leftTop0"> |
| | | <div class="leftTop1"> |
| | | <Icon icon="emojione:hourglass-with-flowing-sand" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData?.totalRemain | 0 }}min</div> |
| | | <div class="subhead">å©ä½æ¶é´</div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | | <div class="leftTop1"> |
| | | <Icon icon="bi:fan" :size="50" /> |
| | | <div> |
| | | <div class="mainInfo">{{ realData.trendVo?.fanFrequency | 0 }} Hz</div> |
| | | <div class="subhead">飿ºé¢ç</div> |
| | | </div> |
| | | </div> |
| | | <div class="leftTop3" :style="{ 'background-image': 'url(/src/assets/images/dry/' + statusGif + '.gif)' }"></div> |
| | | <div class="outDiv eqpStatus"> |
| | | <div |
| | | style=" |
| | | font-size: 28px; |
| | | margin-top: 60px; |
| | | color: white; |
| | | background-color: #1595ea; |
| | | height: 60px; |
| | | width: 180px; |
| | | line-height: 60px; |
| | | text-align: center; |
| | | border-radius: 5px; |
| | | font-weight: bold; |
| | | " |
| | | > |
| | | {{ statusTxt }} |
| | | </div> |
| | | <div |
| | | v-if="realData?.isError" |
| | | class="eqpInfoText blingbling" |
| | | style=" |
| | | position: absolute; |
| | | |
| | | max-height: 130px; |
| | | max-width: 360px; |
| | | 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> |
| | | </div> |
| | | </dv-border-box7> |
| | | |
| | | <dv-border-box7 class="infoChart" style="margin-left: 0px; margin-right: 10px"> |
| | | <div class="chartTittle">é£ç®±æ¸©åº¦</div> |
| | | <div class="outDiv"> |
| | | <div id="bellowsTemp" style="width: 220px; height: 200px"> |
| | | <Icon icon="emojione:hourglass-with-flowing-sand" :size="50" /> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="leftMid"> |
| | | <div class="chartTittle">宿¶è¿åº¦</div> |
| | | <div id="efficiencyLine" style="width: 780px; height: 130px; margin-top: -10px"></div> |
| | |
| | | </div> |
| | | <div id="progressBar" style="width: 780px; height: 80px"></div> |
| | | </dv-border-box7> |
| | | |
| | | |
| | | <!-- <div class="outDiv"> |
| | | <div style="height: 100px; width: 400px"> |
| | | <Progress |
| | |
| | | </div> |
| | | <div class="rightInfo"> |
| | | <div class="rightTop"> |
| | | |
| | | <dv-border-box7 class="tempMoisChart"> |
| | | <div :id="'moisChart'" style="width: 550px; height: 320px"></div> |
| | | </dv-border-box7> |
| | |
| | | </div> |
| | | </dv-border-box7> |
| | | |
| | | |
| | | <dv-border-box7 class="infoChart"> |
| | | <div class="chartTittle" |
| | | >è¸æ±½æ¶è(m³/kg) |
| | |
| | | <div class="leftData"> |
| | | <div class="center" style="height: 100%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3"><span>{{realData?.steam}}</span>m³ </div> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.steam }}</span |
| | | >m³ |
| | | </div> |
| | | <div class="subhead2">è¸æ±½ç¨é</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{standard.zhengqi}}</div> |
| | | <div class="barTop">{{ standard.zhengqi }}</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 | 0 }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :class="{ good: realData?.zqgood, bad: realData?.zqbad }" |
| | | :style="[realData?.zqrHeight && { height: realData?.zqrHeight }]"> </div> |
| | | <div |
| | | class="barDiv" |
| | | :class="{ good: realData?.zqgood, bad: realData?.zqbad }" |
| | | :style="[realData?.zqrHeight && { height: realData?.zqrHeight }]" |
| | | > |
| | | </div> |
| | | </div> |
| | | <div style="line-height: 18px"> |
| | | 宿¶ |
| | |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | | <dv-border-box7 class="infoChart" > |
| | | <dv-border-box7 class="infoChart"> |
| | | <div class="chartTittle">æç对æ¯</div> |
| | | <div class="outDiv" style="padding-top: 10px"> |
| | | <div id="compare" style="width: 300px; height: 200px"></div> |
| | |
| | | <div class="leftData"> |
| | | <div class="center" style="height: 100%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3"><span>{{realData?.watt}}</span>kWh </div> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.watt }}</span |
| | | >kWh |
| | | </div> |
| | | <div class="subhead2">çµè½ç¨é</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{standard.dian}}</div> |
| | | <div class="barTop">{{ standard.dian }}</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 | 0 }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :class="{ good: realData?.dngood, bad: realData?.dnbad }" |
| | | :style="[realData?.dnrHeight && { height: realData?.dnrHeight }]"></div> |
| | | <div |
| | | class="barDiv" |
| | | :class="{ good: realData?.dngood, bad: realData?.dnbad }" |
| | | :style="[realData?.dnrHeight && { height: realData?.dnrHeight }]" |
| | | ></div> |
| | | </div> |
| | | <div style="line-height: 18px"> |
| | | 宿¶ |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useFullscreen } from '@vueuse/core'; |
| | | import { useFullscreen } from '@vueuse/core' |
| | | import { BorderBox13 as DvBorderBox7 } from '@kjgl77/datav-vue3' |
| | | import { router } from '/@/router' |
| | | import { onMounted, ref, onUnmounted } from 'vue' |
| | |
| | | import { queryById } from '../api/DryEquipment.api' |
| | | import { dryEquipment } from '../dataDefine/DryEquipment.data' |
| | | import { useUserStore } from '/@/store/modules/user' |
| | | const domRef = ref<Nullable<HTMLElement>>(null); |
| | | const { enter, toggle, exit, isFullscreen } = useFullscreen(); |
| | | const domRef = ref<Nullable<HTMLElement>>(null) |
| | | const { enter, toggle, exit, isFullscreen } = useFullscreen() |
| | | |
| | | const { toggle: toggleDom } = useFullscreen(domRef); |
| | | const { toggle: toggleDom } = useFullscreen(domRef) |
| | | const Timer = ref() |
| | | const marks = ref<Record<number, any>>({ |
| | | 0: '0°C', |
| | |
| | | 99: '', |
| | | 100: '100°C', |
| | | }) |
| | | |
| | | |
| | | const eqp = ref({} as dryEquipment) |
| | | const userStore = useUserStore() |
| | | const realData = ref({}) |
| | |
| | | text: '嫿°´ç/温度è¶å¿', |
| | | textStyle: { |
| | | //color: '#fff', |
| | | fontSize: 15 |
| | | fontSize: 15, |
| | | }, |
| | | }, |
| | | tooltip: { |
| | |
| | | areaStyle: { |
| | | opacity: 0.2, |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(128, 255, 165)' |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(1, 191, 236)' |
| | | } |
| | | ]) |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(128, 255, 165)', |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(1, 191, 236)', |
| | | }, |
| | | ]), |
| | | }, |
| | | }, |
| | | { |
| | |
| | | areaStyle: { |
| | | opacity: 0.2, |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(255, 0, 135)' |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(135, 0, 157)' |
| | | } |
| | | ]) |
| | | { |
| | | offset: 0, |
| | | color: 'rgb(255, 0, 135)', |
| | | }, |
| | | { |
| | | offset: 1, |
| | | color: 'rgb(135, 0, 157)', |
| | | }, |
| | | ]), |
| | | }, |
| | | // markLine: { |
| | | // data: [ |
| | |
| | | amplitude: 3, |
| | | animationDuration: 5, |
| | | //animationDurationUpdate: 0, |
| | | data: [0.56,0.44,0.32], |
| | | 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: { |
| | |
| | | }, |
| | | legend: { |
| | | right: 60, |
| | | |
| | | }, |
| | | xAxis: { |
| | | show: false, |
| | |
| | | ], |
| | | }, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'é¢å®', |
| | | yAxis: standard.value.xiaolv, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | |
| | | }, |
| | | }, |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'é¢å®', |
| | | yAxis: standard.value.xiaolv, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | }, |
| | | }, |
| | | // markLine: { |
| | | // data: [{ type: 'average', name: 'Avg' }], |
| | | // }, |
| | |
| | | } |
| | | |
| | | const compareOption = { |
| | | |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | }, |
| | | grid: { |
| | | top: '6%', |
| | | left: '10%', |
| | | right: '10%', |
| | | bottom: '3%', |
| | | containLabel: true, |
| | | }, |
| | | xAxis: { |
| | | show: false, |
| | | type: 'value', |
| | | }, |
| | | yAxis: { |
| | | axisLine: { |
| | | show: false, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | type: 'category', |
| | | data: ['1#', '2#', '3#', '4#', '5#', '6#'], |
| | | }, |
| | | series: [ |
| | | { |
| | | name: '2011', |
| | | type: 'bar', |
| | | barWidth: 10, |
| | | data: [190, 89, 34, 70, 44, 30], |
| | | label: { |
| | | show: true, |
| | | position: 'right', |
| | | valueAnimation: true, |
| | | |
| | | color: '#fff', |
| | | }, |
| | | grid: { |
| | | top: '6%', |
| | | left: '10%', |
| | | right: '10%', |
| | | bottom: '3%', |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | show: false, |
| | | type: 'value', |
| | | |
| | | }, |
| | | yAxis: { |
| | | axisLine: { |
| | | show:false, |
| | | }, |
| | | axisTick: { |
| | | show: false, |
| | | }, |
| | | type: 'category', |
| | | data: ['1#', '2#', '3#', '4#', '5#', '6#'] |
| | | }, |
| | | series: [ |
| | | { |
| | | name: '2011', |
| | | type: 'bar', |
| | | barWidth: 10, |
| | | data: [190, 89, 34, 70, 44, 30], |
| | | label: { |
| | | show: true, |
| | | position: 'right', |
| | | valueAnimation: true, |
| | | |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | ] |
| | | } |
| | | |
| | | }, |
| | | ], |
| | | } |
| | | |
| | | option && moisChart.setOption(option) |
| | | waterOption && waterChart.setOption(waterOption) |
| | |
| | | compareOption && compareChart.setOption(compareOption) |
| | | } |
| | | |
| | | |
| | | function queryEqp() { |
| | | queryById({ id: router.currentRoute.value.params.id }).then((res) => { |
| | | // console.log(`output->res`, res) |
| | |
| | | }) |
| | | } |
| | | |
| | | |
| | | var shangliaoFlag = false; |
| | | var statusGif = 'tmrefeng2'; |
| | | var shangliaoFlag = false |
| | | var statusGif = 'tmrefeng2' |
| | | var statusTxt = 'æ£å¨å¹²ç¥' |
| | | |
| | | function chaiwangban() { |
| | | statusGif = 'chaiwangban-1' |
| | | setTimeout(shangliao,7000) |
| | | |
| | | setTimeout(shangliao, 7000) |
| | | } |
| | | |
| | | function shangliao() { |
| | | statusGif = "shangliao-N" |
| | | setTimeout(()=>{ |
| | | statusGif = "zhuangwangban" |
| | | setTimeout(()=>{ |
| | | statusGif = "guanmen1" |
| | | setTimeout(()=>{ |
| | | statusGif = 'shangliao-N' |
| | | setTimeout(() => { |
| | | statusGif = 'zhuangwangban' |
| | | setTimeout(() => { |
| | | statusGif = 'guanmen1' |
| | | setTimeout(() => { |
| | | shangliaoFlag = false |
| | | },4000) |
| | | |
| | | },5000) |
| | | },13000) |
| | | }, 4000) |
| | | }, 5000) |
| | | }, 13000) |
| | | } |
| | | |
| | | function queryRealTime() { |
| | |
| | | let eqpCode = eqp.value.code |
| | | let queryRealTimeUrl = '/dry/real/getRealTimeData' |
| | | defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenantId, machineid: eqpCode } }).then((res) => { |
| | | |
| | | if (res && res.trendVo) { |
| | | console.log(`output->re11s`, res) |
| | | //console.log(`output->re11s`, res) |
| | | // res.tempValue = [res.windTemp, 100] |
| | | //res.percent = ((res.dryTime / res.et) * 100).toFixed(2) |
| | | /**æ°´æ»´å¾å«æ°´é */ |
| | |
| | | ], |
| | | }) |
| | | } |
| | | res.totalRemain = res.remain - (res.dryTime - totalTime)>0?res.remain - (res.dryTime - totalTime):0 |
| | | res.totalRemain = res.remain - (res.dryTime - totalTime) > 0 ? res.remain - (res.dryTime - totalTime) : 0 |
| | | progressSeries.push({ |
| | | name: 'å©ä½', |
| | | type: 'bar', |
| | |
| | | }, |
| | | yAxis: { |
| | | max: function (value) { |
| | | |
| | | console.log("max::",value); |
| | | if (value.max < standard.value.xiaolv + 3) { |
| | | return standard.value.xiaolv + 3 |
| | | } else { |
| | | return value.max |
| | | } |
| | | }, |
| | | |
| | | |
| | | |
| | | // console.log("max::",value); |
| | | if (value.max < standard.value.xiaolv + 3) { |
| | | return standard.value.xiaolv + 3 |
| | | } else { |
| | | return value.max |
| | | } |
| | | }, |
| | | }, |
| | | series: [{ data: ganZaoXiaoLv, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'é¢å®', |
| | | yAxis: standard.value.xiaolv, |
| | | series: [ |
| | | { |
| | | data: ganZaoXiaoLv, |
| | | markLine: { |
| | | symbol: 'none', |
| | | data: [ |
| | | { |
| | | name: 'é¢å®', |
| | | yAxis: standard.value.xiaolv, |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | }, |
| | | ], |
| | | label: { |
| | | formatter: '{b}\n{c}', |
| | | |
| | | }, |
| | | } }, { data: zhengQiXiaoHao }, { data: dianNengXiaoHao }], |
| | | }, |
| | | { data: zhengQiXiaoHao }, |
| | | { data: dianNengXiaoHao }, |
| | | ], |
| | | }) |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /**æç对æ¯å¾ */ |
| | | if( (res.originWeight - res.yield) <= 0) { |
| | | res.xiaolv = standard.value.xiaolv + 6 |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.xiaolv = standard.value.xiaolv + 6 |
| | | } else { |
| | | res.xiaolv = (((res.originWeight - res.yield) / res.dryTime) * 60).toFixed(2) |
| | | } |
| | | |
| | | |
| | | if (res.xiaolv > standard.value.xiaolv) { |
| | | res.xlgood = true |
| | | res.xlsHeight = (standard.value.xiaolv / res.xiaolv) * 100 + '%' |
| | |
| | | res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%' |
| | | } |
| | | |
| | | |
| | | |
| | | /** è¸æ±½æ¶è */ |
| | | if( (res.originWeight - res.yield) <= 0) { |
| | | res.zhengqi = standard.value.zhengqi -3 |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.zhengqi = standard.value.zhengqi - 3 |
| | | } else { |
| | | res.zhengqi = (res.steam / (res.originWeight - res.yield)).toFixed(1) |
| | | } |
| | | console.log('zhengqi:', res.zhengqi); |
| | | //console.log('zhengqi:', res.zhengqi); |
| | | if (res.zhengqi > standard.value.zhengqi) { |
| | | res.zqbad = true |
| | | res.zqsHeight = (standard.value.zhengqi / res.zhengqi) * 100 + '%' |
| | |
| | | res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%' |
| | | } |
| | | |
| | | |
| | | |
| | | /** çµè½æ¶è */ |
| | | if( (res.originWeight - res.yield) <= 0) { |
| | | res.dian = standard.value.dian -1.5 |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.dian = standard.value.dian - 1.5 |
| | | } else { |
| | | res.dian = (res.watt / (res.originWeight - res.yield)).toFixed(1) |
| | | } |
| | | |
| | | |
| | | if (res.dian > standard.value.dian) { |
| | | res.dnbad = true |
| | | res.dnsHeight = (standard.value.dian / res.dian) * 100 + '%' |
| | | res.dnrHeight = '100%' |
| | | } else if (res.dian < standard.value.dMin) { |
| | | |
| | | res.dngood = true |
| | | res.dnsHeight = '100%' |
| | | res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%' |
| | |
| | | /**ç¶æ/gifå¨å¾ */ |
| | | if (!shangliaoFlag) { |
| | | if (res.orderStatus == 0) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'åå¤' |
| | | } else if (res.orderStatus == 1) { |
| | | shangliaoFlag = true |
| | | statusGif = 'kaimen1' |
| | | statusTxt = '䏿' |
| | | setTimeout(chaiwangban,4000) |
| | | } else if (res.orderStatus == 2) { |
| | | if(res.state_fan == 1) { |
| | | statusGif = 'tmrefeng2' |
| | | statusTxt = 'æ£å¨å¹²ç¥' |
| | | } |
| | | statusGif = 'zanting' |
| | | statusTxt = 'åå¤' |
| | | } else if (res.orderStatus == 1) { |
| | | shangliaoFlag = true |
| | | statusGif = 'kaimen1' |
| | | statusTxt = '䏿' |
| | | setTimeout(chaiwangban, 4000) |
| | | } else if (res.orderStatus == 2) { |
| | | if (res.state_fan == 1) { |
| | | statusGif = 'tmrefeng2' |
| | | statusTxt = 'æ£å¨å¹²ç¥' |
| | | } |
| | | |
| | | if(res.state_roller == 4) { |
| | | statusGif = 'fanliao-N' |
| | | statusTxt = 'æ£å¨ç¿»æ' |
| | | } |
| | | if (res.state_roller == 4) { |
| | | statusGif = 'fanliao-N' |
| | | statusTxt = 'æ£å¨ç¿»æ' |
| | | } |
| | | |
| | | if (res.state_roller == 5) { |
| | | statusGif = 'chuliao-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 = 'æå' |
| | | } else if (res.orderStatus == 4) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'å¹²ç¥å®æ' |
| | | } |
| | | |
| | | if (res.state_windbox == 2 || res.state_windbox == 3) { |
| | | statusGif = 'fengxiangsheng-1' |
| | | statusTxt = 'æ£å¨å¹²ç¥' |
| | | } |
| | | } else if(res.orderStatus == 3) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'æå' |
| | | } else if(res.orderStatus == 4) { |
| | | statusGif = 'zanting' |
| | | statusTxt = 'å¹²ç¥å®æ' |
| | | } |
| | | } |
| | | |
| | | |
| | | if (compareChart) { |
| | | compareChart.setOption({ |
| | | yAxis: { |
| | | data: res.compEqpNum |
| | | data: res.compEqpNum, |
| | | }, |
| | | series: { |
| | | data: res.compEqpEffic |
| | | } |
| | | data: res.compEqpEffic, |
| | | }, |
| | | }) |
| | | } |
| | | |
| | |
| | | res = { |
| | | mois: [], |
| | | gif: 'tmrefeng2', |
| | | herbImage: 'yaocai1.png' |
| | | herbImage: 'yaocai1.png', |
| | | } |
| | | } |
| | | console.log(`output->res`, res) |
| | | //console.log(`output->res`, res) |
| | | realData.value = res |
| | | }) |
| | | } |
| | |
| | | .eqpImage { |
| | | height: 860px; |
| | | width: 1800px; |
| | | /* background-image: url(/src/assets/images/dry/bg.png); |
| | | /* background-image: url(/src/assets/images/dry/bg.png); |
| | | background-repeat: no-repeat; */ |
| | | |
| | | /*background-position: 160px 280px; */ |
| | |
| | | width: 1080px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | |
| | | |
| | | /* background-color: white; |
| | | background-image: url(/src/assets/images/dry/shebei1.png); |
| | | background-repeat: no-repeat; |
| | |
| | | border-radius: 10px; |
| | | flex-wrap: wrap; |
| | | background-position: -78px 119px; |
| | | |
| | | } |
| | | .leftTop0 { |
| | | height: 600px; |
| | |
| | | flex-wrap: wrap; |
| | | } |
| | | .leftMid { |
| | | |
| | | width: 780px; |
| | | height: 230px; |
| | | /* border: 1px solid; */ |
| | |
| | | align-items: center; |
| | | font-size: 30px; |
| | | color: #727272; |
| | | |
| | | } |
| | | .leftTop2 { |
| | | width: 250px; |
| | |
| | | width: 590px; |
| | | height: 360px; |
| | | /* background: white; */ |
| | | |
| | | |
| | | padding: 20px; |
| | | border-radius: 10px; |
| | | } |
| | |
| | | :marks="marks" |
| | | vertical |
| | | /> |
| | | <div |
| | | class="info-text">çé£ï¼<span >{{ realTime.get(item.id)?.windTemp | 0 }}</span> °C</div |
| | | <div class="info-text" |
| | | >çé£ï¼<span>{{ realTime.get(item.id)?.windTemp | 0 }}</span> °C</div |
| | | > |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | .eqp-content { |
| | | height: 100%; |
| | | background-color: #fdfdfd; |
| | | box-shadow: 0px 0px 23px #72727278; |
| | | background-image: url(/src/assets/images/dry/ganzaoji-x.png); |
| | | background-repeat: no-repeat; |
| | | background-size: 60% 60%; |
| | | background-position: 105px 127px; |
| | | border-radius: 8px; |
| | | background-color: #fdfdfd; |
| | | box-shadow: 0px 0px 23px #72727278; |
| | | background-image: url(/src/assets/images/dry/ganzaoji-x.png); |
| | | background-repeat: no-repeat; |
| | | background-size: 60% 60%; |
| | | background-position: 105px 127px; |
| | | border-radius: 8px; |
| | | } |
| | | |
| | | .chart { |
| | |
| | | } |
| | | .eqpStatus { |
| | | width: 170px; |
| | | background-position: -21px 19px; |
| | | background-image: url(/src/assets/images/dry/refeng2.gif); |
| | | background-size: 196px; |
| | | background-repeat: no-repeat; |
| | | display: inline-flex; |
| | | flex-direction: column-reverse; |
| | | padding: 15px; |
| | | background-position: -21px 19px; |
| | | background-image: url(/src/assets/images/dry/refeng2.gif); |
| | | background-size: 196px; |
| | | background-repeat: no-repeat; |
| | | display: inline-flex; |
| | | flex-direction: column-reverse; |
| | | padding: 15px; |
| | | } |
| | | .info { |
| | | display: flex; |
| | |
| | | } |
| | | .eqpName { |
| | | margin-top: 190px; |
| | | margin-left: 129px; |
| | | width: 95px; |
| | | /* font-size: 14px; */ |
| | | font-weight: bold; |
| | | text-align: center; |
| | | background-color: white; |
| | | height: 22px; |
| | | margin-left: 58px; |
| | | width: 205px; |
| | | /* font-size: 14px; */ |
| | | font-weight: bold; |
| | | text-align: center; |
| | | background-color: white; |
| | | height: 22px; |
| | | } |
| | | |
| | | .tempChart { |
| | |
| | | <div class="app-loading-dots"> |
| | | <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span> |
| | | </div> |
| | | <div class="app-loading-title">æºè½ä¸èè¯å¹²ç¥ç³»ç»</div> |
| | | <div class="app-loading-title">æºè½ä¸èè¯å¹²ç¥é
æ¹ç®¡çç³»ç»</div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | |
| | | <div class="aui-form"> |
| | | <div class="aui-image"> |
| | | <div>Lanpu</div> |
| | | <div>å
°æµ¦æºè½ä¸èè¯å¹²ç¥ç³»ç»</div> |
| | | <div>æºè½ä¸èè¯å¹²ç¥é
æ¹ç®¡çç³»ç»</div> |
| | | <!-- <div class="aui-image-text">--> |
| | | <!-- <img :src="adTextImg" />--> |
| | | <!-- </div>--> |