| | |
| | | VITE_GLOB_API_URL=/herb |
| | | |
| | | #后台接口全路径地址(必填) |
| | | VITE_GLOB_DOMAIN_URL=http://jeecg-boot-gateway:9999 |
| | | VITE_GLOB_DOMAIN_URL=http://127.0.0.1:8800/herb/ |
| | | |
| | | # 接口父路径前缀 |
| | | VITE_GLOB_API_URL_PREFIX= |
| | |
| | | /> |
| | | <LayoutBreadcrumb v-if="getShowContent && getShowBread" :theme="getHeaderTheme" /> |
| | | <!-- 欢迎语 --> |
| | | <span v-if="getShowContent && getShowBreadTitle && !getIsMobile" :class="[prefixCls, `${prefixCls}--${getHeaderTheme}`,'headerIntroductionClass']"> 欢迎进入 {{ '智能中药干燥机数字化车间' }} </span> |
| | | <span v-if="getShowContent && getShowBreadTitle && !getIsMobile" :class="[prefixCls, `${prefixCls}--${getHeaderTheme}`,'headerIntroductionClass']"> 欢迎进入 {{ '中药车间智能生产管理系统' }} </span> |
| | | </div> |
| | | <!-- left end --> |
| | | |
| | |
| | | |
| | | function clickButton(cmd, msg) { |
| | | console.log("target::::",cmd); |
| | | var params = { msg: msg, code: cmd, tenantId: 1003, machineId: "GM001" }; |
| | | let tenantId = userStore.getTenant; |
| | | var params = { msg: msg, code: cmd, tenantId: tenantId, machineId: "GM001" }; |
| | | sendCommand(params).then(res => { |
| | | if (res.success) { |
| | | addLog("响应", res.message); |
| | |
| | | <div class="formulaItem"> |
| | | <Icon style="color: powderblue" icon="la:box" :size="38" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.feed }} 筐</div> |
| | | <div class="mainInfo2">{{ realData?.feed || 0 }} 筐</div> |
| | | <div class="subhead2">投料量</div> |
| | | </div> |
| | | </div> |
| | | <div class="formulaItem"> |
| | | <Icon style="color: red" icon="bx:wind" :size="35" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.windTemp }} °C</div> |
| | | <div class="mainInfo2">{{ realData?.windTemp || 0 }} °C</div> |
| | | <div class="subhead2">热风</div> |
| | | </div> |
| | | </div> |
| | | <div class="formulaItem"> |
| | | <Icon style="color: green" icon="tabler:target-arrow" :size="35" /> |
| | | <div> |
| | | <div class="mainInfo2">{{ realData?.target }} %</div> |
| | | <div class="mainInfo2">{{ realData?.target || 0 }} %</div> |
| | | <div class="subhead2">目标</div> |
| | | </div> |
| | | </div> |
| | |
| | | <div class="center" style="height: 50%"> |
| | | <div class="centerText"> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.target }}</span> % |
| | | ><span>{{ realData?.target || 0 }}</span> % |
| | | </div> |
| | | <div class="subhead2">目标含水率</div> |
| | | </div> |
| | |
| | | <div class="center" style="height: 50%"> |
| | | <div> |
| | | <div class="mainInfo3" |
| | | ><span>{{ realData?.initial }}</span> %</div |
| | | ><span>{{ realData?.initial || 0 }}</span> %</div |
| | | > |
| | | <div class="subhead2">来料含水率</div> |
| | | </div> |
| | |
| | | <div class="chartTittle"> |
| | | 干燥效率(kg/h) |
| | | <div class="rightLabel"> |
| | | <div class="label good">>{{ standard.xiaolv }} 优 </div> |
| | | <div class="label bad"><{{ standard.xlMin }} 差</div> |
| | | <div class="label good">>{{ eqp.dryEfficiency }} 优 </div> |
| | | <div class="label bad"><{{ eqp.dryEfficiency * 0.9.toFixed(2) }} 差</div> |
| | | </div> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ standard.xiaolv }}</div> |
| | | <div class="barTop">{{ eqp.dryEfficiency }}</div> |
| | | <div class="barBack"> |
| | | <div class="barDiv" :style="{ height: realData?.xlsHeight }"></div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ realData?.xiaolv | 0 }}</div> |
| | | <div class="barTop">{{ realData?.xiaolv || 0 }}</div> |
| | | <div class="barBack"> |
| | | <div |
| | | class="barDiv" |
| | |
| | | <div class="chartTittle" |
| | | >蒸汽消耗(m³/kg) |
| | | <div class="rightLabel"> |
| | | <div class="label bad">>{{ standard.zhengqi }} 差</div> |
| | | <div class="label good"><{{ standard.zqMin }} 优</div> |
| | | <div class="label bad">>{{ eqp.steamConsumption }} 差</div> |
| | | <div class="label good"><{{ eqp.steamConsumption * 0.9.toFixed(2) }} 优</div> |
| | | </div> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ standard.zhengqi }}</div> |
| | | <div class="barTop">{{ eqp.steamConsumption }}</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" |
| | |
| | | <div class="chartTittle"> |
| | | <div> 电能消耗(kWh/kg)</div> |
| | | <div class="rightLabel"> |
| | | <div class="label bad">>{{ standard.dian }} 差</div> |
| | | <div class="label good"><{{ standard.dMin }} 优</div> |
| | | <div class="label bad">>{{ eqp.powerConsumption }} 差</div> |
| | | <div class="label good"><{{ eqp.powerConsumption * 0.9.toFixed(2) }} 优</div> |
| | | </div> |
| | | </div> |
| | | <div class="outDiv" style="padding-top: 20px"> |
| | |
| | | </div> |
| | | <div class="rightChart center"> |
| | | <div class="center compareBar"> |
| | | <div class="barTop">{{ standard.dian }}</div> |
| | | <div class="barTop">{{ eqp.powerConsumption }}</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" |
| | |
| | | import { queryById, listAll } from '../api/DryEquipment.api' |
| | | import { dryEquipment } from '../dataDefine/DryEquipment.data' |
| | | import { useUserStore } from '/@/store/modules/user' |
| | | import { getTenantId, getToken } from '/@/utils/auth' |
| | | |
| | | const domRef = ref<Nullable<HTMLElement>>(null) |
| | | const { enter, toggle, exit, isFullscreen } = useFullscreen() |
| | |
| | | smooth: true, |
| | | symbol: 'none', |
| | | data: [ |
| | | [1, 1], |
| | | [2, 2], |
| | | |
| | | ], |
| | | lineStyle: { |
| | | width: 1, |
| | |
| | | smooth: true, |
| | | symbol: 'none', |
| | | data: [ |
| | | [1, 10], |
| | | [2, 20], |
| | | |
| | | ], |
| | | lineStyle: { |
| | | width: 1, |
| | |
| | | amplitude: 3, |
| | | animationDuration: 5, |
| | | //animationDurationUpdate: 0, |
| | | data: [0.56, 0.44, 0.32], |
| | | data: [0, 0, 0], |
| | | shape: |
| | | 'path://M828.817,706.209C828.817,881.725,686.98,1024,512,1024c-174.98,0-316.817-142.275-316.817-317.791C195.183,530.74,512,0,512,0s316.817,530.74,316.817,706.209z', |
| | | outline: { |
| | |
| | | }, |
| | | data: [ |
| | | { |
| | | value: 20, |
| | | value: 0, |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | }, |
| | | data: [ |
| | | { |
| | | value: 20, |
| | | value: 0, |
| | | }, |
| | | ], |
| | | }, |
| | |
| | | axisLabel: { |
| | | formatter: '{value} °C', |
| | | }, |
| | | // max: standard.value.xiaolv + 3, |
| | | // max: eqp.value.dryEfficiency + 3, |
| | | }, |
| | | series: [ |
| | | { |
| | |
| | | }, |
| | | // [[15,10], [15,11], [10,6], [7.5,12], [5,12], [2.5,5], [2.5,9], [1,7]] |
| | | data: [ |
| | | [0, 1], |
| | | [15, 10], |
| | | [45, 11], |
| | | [70, 6], |
| | | |
| | | ], |
| | | markPoint: { |
| | | data: [ |
| | |
| | | data: [ |
| | | { |
| | | name: '额定', |
| | | yAxis: standard.value.xiaolv, |
| | | yAxis: eqp.value.dryEfficiency, |
| | | }, |
| | | ], |
| | | label: { |
| | |
| | | name: '2011', |
| | | type: 'bar', |
| | | barWidth: 10, |
| | | data: [190, 89, 34, 70, 44, 30], |
| | | data: [0, 0, 0, 0, 0, 0], |
| | | label: { |
| | | show: true, |
| | | position: 'right', |
| | |
| | | queryById({ id: router.currentRoute.value.params.id }).then((res) => { |
| | | // console.log(`output->res`, res) |
| | | eqp.value = res |
| | | eqp.value.dryEfficiency = res.dryEfficiency |
| | | eqp.value.steamConsumption = res.steamConsumption |
| | | eqp.value.powerConsumption = res.powerConsumption |
| | | queryRealTime() |
| | | setTimeout(initCharts, 500) |
| | | }) |
| | |
| | | if (eqp.value) { |
| | | eqp.value = eqps.value[eqpNum.value] |
| | | // console.log("888",eqp.value); |
| | | let tenantId = 1003 |
| | | let tenantId = getTenantId() |
| | | let eqpCode = eqp.value.code |
| | | let queryRealTimeUrl = '/dry/real/getRealTimeData' |
| | | defHttp.get({ url: queryRealTimeUrl, params: { tenantid: tenantId, machineid: eqpCode } }).then((res) => { |
| | |
| | | /**温度环形图 */ |
| | | if (bellowsTempChart) { |
| | | bellowsTempChart.setOption({ |
| | | series: [{ data: [{ value: res.windTemp }] }, { data: [{ value: res.windTemp }] }], |
| | | series: [{ data: [{ value: res.trendVo.bellowsTemp }] }, { data: [{ value: res.trendVo.bellowsTemp }] }], |
| | | }) |
| | | } |
| | | /**风机频率环形图 */ |
| | |
| | | }) |
| | | } |
| | | |
| | | // ganZaoXiaoLv.push([totalTime + res.remain,standard.value.xiaolv]) |
| | | // ganZaoXiaoLv.push([totalTime + res.remain,eqp.value.dryEfficiency]) |
| | | // console.log(`output->res.remain`, res.remain) |
| | | // console.log(`output->res.dryTime`, res.dryTime) |
| | | // console.log(`output->totalTime`, totalTime) |
| | |
| | | data: [ |
| | | { |
| | | name: '额定', |
| | | yAxis: standard.value.xiaolv, |
| | | yAxis: eqp.value.dryEfficiency, |
| | | }, |
| | | ], |
| | | label: { |
| | |
| | | }) |
| | | } |
| | | |
| | | let lastTrend = res.detailList[res.detailList.length-1] |
| | | /**效率对比图 */ |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.xiaolv = standard.value.xiaolv + 6 |
| | | if (res.originWeight - lastTrend.weight <= 0) { |
| | | res.xiaolv = 0 |
| | | } else { |
| | | res.xiaolv = (((res.originWeight - res.yield) / res.dryTime) * 60).toFixed(2) |
| | | res.xiaolv = (((res.originWeight - lastTrend.weight) / lastTrend.totalTime) * 60).toFixed(2) |
| | | } |
| | | |
| | | if (res.xiaolv > standard.value.xiaolv) { |
| | | res.xiaolv = Number(res.xiaolv) |
| | | eqp.value.dryEfficiency = Number(eqp.value.dryEfficiency) |
| | | if (res.xiaolv > eqp.value.dryEfficiency) { |
| | | console.log("xiaolv:",res , eqp); |
| | | res.xlgood = true |
| | | res.xlsHeight = (standard.value.xiaolv / res.xiaolv) * 100 + '%' |
| | | res.xlsHeight = (eqp.value.dryEfficiency / res.xiaolv) * 100 + '%' |
| | | res.xlrHeight = '100%' |
| | | } else if (res.xiaolv < standard.value.xlMin) { |
| | | } else if (res.xiaolv < eqp.value.dryEfficiency * 0.9) { |
| | | res.xlbad = true |
| | | res.xlsHeight = '100%' |
| | | res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%' |
| | | res.xlrHeight = (res.xiaolv / eqp.value.dryEfficiency) * 100 + '%' |
| | | } else { |
| | | res.xlsHeight = '100%' |
| | | res.xlrHeight = (res.xiaolv / standard.value.xiaolv) * 100 + '%' |
| | | res.xlrHeight = (res.xiaolv / eqp.value.dryEfficiency) * 100 + '%' |
| | | } |
| | | |
| | | /** 蒸汽消耗 */ |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.zhengqi = standard.value.zhengqi - 3 |
| | | if (res.originWeight - lastTrend.weight <= 0) { |
| | | res.zhengqi = 0 |
| | | } else { |
| | | res.zhengqi = (res.steam / (res.originWeight - res.yield)).toFixed(1) |
| | | res.zhengqi = (lastTrend.steam / (res.originWeight - lastTrend.weight)).toFixed(2) |
| | | } |
| | | res.zhengqi = standard.value.zhengqi - 3 |
| | | console.log(res); |
| | | console.log('zhengqi:', res.zhengqi); |
| | | if (res.zhengqi > standard.value.zhengqi) { |
| | | res.zhengqi = Number(res.zhengqi) |
| | | eqp.value.steamConsumption = Number(eqp.value.steamConsumption) |
| | | // res.zhengqi = eqp.value.steamConsumption - 3 |
| | | // console.log(res); |
| | | // console.log('zhengqi:', res.zhengqi); |
| | | if (res.zhengqi > eqp.value.steamConsumption) { |
| | | res.zqbad = true |
| | | res.zqsHeight = (standard.value.zhengqi / res.zhengqi) * 100 + '%' |
| | | res.zqsHeight = (eqp.value.steamConsumption / res.zhengqi) * 100 + '%' |
| | | res.zqrHeight = '100%' |
| | | } else if (res.zhengqi < standard.value.zqMin) { |
| | | } else if (res.zhengqi < eqp.value.steamConsumption * 0.9) { |
| | | res.zqgood = true |
| | | res.zqsHeight = '100%' |
| | | res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%' |
| | | res.zqrHeight = (res.zhengqi / eqp.value.steamConsumption) * 100 + '%' |
| | | } else { |
| | | res.zqsHeight = '100%' |
| | | res.zqrHeight = (res.zhengqi / standard.value.zhengqi) * 100 + '%' |
| | | res.zqrHeight = (res.zhengqi / eqp.value.steamConsumption) * 100 + '%' |
| | | } |
| | | |
| | | /** 电能消耗 */ |
| | | if (res.originWeight - res.yield <= 0) { |
| | | res.dian = standard.value.dian - 1.5 |
| | | if (res.originWeight - lastTrend.weight <= 0) { |
| | | res.dian = 0 |
| | | } else { |
| | | res.dian = (res.watt / (res.originWeight - res.yield)).toFixed(1) |
| | | res.dian = (lastTrend.watt / (res.originWeight - lastTrend.weight)).toFixed(2) |
| | | } |
| | | res.dian = standard.value.dian - 1.5 |
| | | if (res.dian > standard.value.dian) { |
| | | // res.dian = eqp.value.powerConsumption - 1.5 |
| | | res.dian = Number(res.dian) |
| | | eqp.value.powerConsumption = Number(eqp.value.powerConsumption) |
| | | if (res.dian > eqp.value.powerConsumption) { |
| | | console.log("dian::", res.dian,eqp.value.powerConsumption ) |
| | | res.dnbad = true |
| | | res.dnsHeight = (standard.value.dian / res.dian) * 100 + '%' |
| | | res.dnsHeight = (eqp.value.powerConsumption / res.dian) * 100 + '%' |
| | | res.dnrHeight = '100%' |
| | | } else if (res.dian < standard.value.dMin) { |
| | | } else if (res.dian < eqp.value.powerConsumption * 0.9) { |
| | | res.dngood = true |
| | | res.dnsHeight = '100%' |
| | | res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%' |
| | | res.dnrHeight = (res.dian / eqp.value.powerConsumption) * 100 + '%' |
| | | } else { |
| | | res.dnsHeight = '100%' |
| | | res.dnrHeight = (res.dian / standard.value.dian) * 100 + '%' |
| | | res.dnrHeight = (res.dian / eqp.value.powerConsumption) * 100 + '%' |
| | | } |
| | | |
| | | //console.log('state:::fan::', res.state_fan, 'roller::', res.state_roller, 'windbox::', res.state_windbox) |
| | |
| | | } |
| | | } |
| | | |
| | | //console.log(`output->res`, res) |
| | | // console.log(`output->res`, res.detailList[res.detailList.length-1]) |
| | | realData.value = res |
| | | }) |
| | | } |
| | |
| | | <div class="statistics putincolor"> |
| | | <div class="stat_label font16"> 总投料量 </div> |
| | | <div class="stat_value"> |
| | | {{ originWeight.toFixed(2) }} |
| | | {{ originWeight?.toFixed(2) || 0 }} |
| | | <span class="font16"> Kg </span> |
| | | </div> |
| | | <div class="stat_avg"> |
| | | <div> 预计产量 </div> |
| | | <div> {{ totalYield.toFixed(2) }} kg </div> |
| | | <div> {{ totalYield?.toFixed(2) || 0 }} kg </div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | |
| | | <div class="statistics putincolor"> |
| | | <div class="stat_label font16"> 电量消耗 </div> |
| | | <div class="stat_value"> |
| | | {{ watt.toFixed(2) }} |
| | | {{ watt?.toFixed(2) || 0 }} |
| | | <span class="font16"> Kwh </span> |
| | | </div> |
| | | <div class="stat_avg"> |
| | | <div> 平均电耗 </div> |
| | | <div> {{wattAvg.toFixed(2)}} Kwh/kg </div> |
| | | <div> {{wattAvg?.toFixed(2) || 0}} Kwh/kg </div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | |
| | | <div class="statistics putincolor"> |
| | | <div class="stat_label font16"> 蒸汽消耗 </div> |
| | | <div class="stat_value"> |
| | | {{ steam.toFixed(2) }} |
| | | {{ steam?.toFixed(2) || 0 }} |
| | | <span class="font16"> m³ </span> |
| | | </div> |
| | | <div class="stat_avg"> |
| | | <div> 平均汽耗 </div> |
| | | <div> {{steamAvg.toFixed(2)}} m³/kg </div> |
| | | <div> {{steamAvg?.toFixed(2) || 0}} m³/kg </div> |
| | | </div> |
| | | </div> |
| | | </dv-border-box7> |
| | |
| | | <div class="eqp-timer"> |
| | | <div |
| | | ><Icon style="color: #1850b7" icon="ic:twotone-water-drop" :size="20" /> |
| | | {{ realTime.get(eqpCodes[num - 1])?.trendVo?.moisture.toFixed(1) || '0' }} % |
| | | {{ realTime.get(eqpCodes[num - 1])?.trendVo?.moisture?.toFixed(1) || '0' }} % |
| | | </div> |
| | | <div |
| | | ><Icon style="color: #873853" icon="fluent:temperature-20-regular" :size="20" /> |
| | | {{ realTime.get(eqpCodes[num - 1])?.trendVo?.bellowsTemp.toFixed(0) || '0' }} ℃ |
| | | {{ realTime.get(eqpCodes[num - 1])?.trendVo?.bellowsTemp?.toFixed(0) || '0' }} ℃ |
| | | </div> |
| | | <div |
| | | ><Icon style="color: rgb(134 207 106)" icon="gg:sand-clock" :size="20" /> |
| | |
| | | <div class="eqp-timer"> |
| | | <div |
| | | ><Icon style="color: #1850b7" icon="ic:twotone-water-drop" :size="20" /> |
| | | {{ realTime.get(eqpCodes[num + 3])?.trendVo?.moisture.toFixed(1) || '0' }} % |
| | | {{ realTime.get(eqpCodes[num + 3])?.trendVo?.moisture?.toFixed(1) || '0' }} % |
| | | </div> |
| | | <div |
| | | ><Icon style="color: #873853" icon="fluent:temperature-20-regular" :size="20" /> |
| | | {{ realTime.get(eqpCodes[num + 3])?.trendVo?.bellowsTemp.toFixed(0) || '0' }} ℃ |
| | | {{ realTime.get(eqpCodes[num + 3])?.trendVo?.bellowsTemp?.toFixed(0) || '0' }} ℃ |
| | | </div> |
| | | <!-- <div><Icon style="color: rgb(42 154 234)" icon="mdi:clock-outline" :size="20" /> |
| | | {{realTime.get(eqpCodes[num + 3])?.dryTime || 0}} min |
| | |
| | | const eqpMap = ref(new Map()) |
| | | const eqpCodes = ref(['GM001', 'GM002', 'GM003', 'GM004', 'GM005', 'GM006', 'GM007', 'GM008']) |
| | | const eqps = ref([] as dryEquipment[]) |
| | | const title = ref('兰浦智能干燥车间') |
| | | const title = ref('智能干燥车间') |
| | | const userStore = useUserStore() |
| | | const envHum = ref(0) |
| | | const envTemp = ref(0) |
| | |
| | | const eqpMap = ref(new Map()) |
| | | const eqpCodes = ref(['GM001', 'GM002', 'GM003', 'GM004', 'GM005', 'GM006', 'GM007', 'GM008']) |
| | | const eqps = ref([] as dryEquipment[]) |
| | | const title = ref("兰浦智能干燥车间") |
| | | const title = ref("智能干燥车间") |
| | | const userStore = useUserStore() |
| | | console.log(userStore.dictItems.title) |
| | | userStore.dictItems.title?.forEach(element => { |
| | |
| | | const eqpMap = ref(new Map()) |
| | | const eqpCodes = ref(['GM001', 'GM002', 'GM003', 'GM004', 'GM005', 'GM006', 'GM007', 'GM008']) |
| | | const eqps = ref([] as dryEquipment[]) |
| | | const title = ref("兰浦智能干燥车间") |
| | | const title = ref("智能干燥车间") |
| | | const userStore = useUserStore() |
| | | console.log(userStore.dictItems.title) |
| | | userStore.dictItems.title?.forEach(element => { |
| | | if (element.value === "bigscreentitle") { |
| | | if (element.value === "bigscreentitle") { |
| | | title.value = element.text |
| | | } |
| | | |
| | |
| | | align: 'center', |
| | | dataIndex: 'name', |
| | | }, |
| | | { |
| | | title: '干燥效率', |
| | | align: 'center', |
| | | dataIndex: 'dryEfficiency', |
| | | }, |
| | | { |
| | | title: '蒸汽均耗', |
| | | align: 'center', |
| | | dataIndex: 'steamConsumption', |
| | | }, |
| | | { |
| | | title: '电能均耗', |
| | | align: 'center', |
| | | dataIndex: 'powerConsumption', |
| | | }, |
| | | ] |
| | | //查询数据 |
| | | export const searchFormSchema: FormSchema[] = [ |
| | |
| | | return [{ required: true, message: '请输入名称!' }, { ...rules.duplicateCheckRule('dry_eqp_type', 'name', model, schema)[0] }] |
| | | }, |
| | | }, |
| | | { |
| | | label: '干燥效率', |
| | | field: 'dryEfficiency', |
| | | component: 'Input', |
| | | dynamicRules: ({ model, schema }) => { |
| | | return [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }] |
| | | }, |
| | | renderComponentContent: () => { |
| | | return { |
| | | suffix: () => 'kg/h', |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | label: '蒸汽均耗', |
| | | field: 'steamConsumption', |
| | | component: 'Input', |
| | | dynamicRules: ({ model, schema }) => { |
| | | return [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }] |
| | | }, |
| | | renderComponentContent: () => { |
| | | return { |
| | | suffix: () => 'm³/kg', |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | label: '电能均耗', |
| | | field: 'powerConsumption', |
| | | component: 'Input', |
| | | dynamicRules: ({ model, schema }) => { |
| | | return [{ required: false }, { pattern: /^-?\d+\.?\d*$/, message: '请输入数字!' }] |
| | | }, |
| | | renderComponentContent: () => { |
| | | return { |
| | | suffix: () => 'KWh/kg', |
| | | } |
| | | }, |
| | | }, |
| | | // TODO 主键隐藏字段,目前写死为ID |
| | | { |
| | | label: '', |
| | |
| | | dataIndex: 'ip', |
| | | }, |
| | | { |
| | | title: '车间id', |
| | | title: '车间', |
| | | align: 'center', |
| | | dataIndex: 'shopId_dictText', |
| | | }, |
| | |
| | | align: 'center', |
| | | dataIndex: 'equId_dictText', |
| | | }, |
| | | { |
| | | title: '车间', |
| | | align: 'center', |
| | | dataIndex: 'shopId_dictText', |
| | | }, |
| | | // { |
| | | // title: '车间', |
| | | // align: 'center', |
| | | // dataIndex: 'shopId_dictText', |
| | | // }, |
| | | { |
| | | title: '初始含水率', |
| | | align: 'center', |
| | |
| | | dataIndex: 'windTemp', |
| | | }, |
| | | { |
| | | title: '蒸汽量', |
| | | align: 'center', |
| | | dataIndex: 'steam', |
| | | }, |
| | | { |
| | | title: '耗电量', |
| | | align: 'center', |
| | | dataIndex: 'watt', |
| | | }, |
| | | { |
| | | title: '环境温度', |
| | | align: 'center', |
| | | dataIndex: 'envTemp', |
| | |
| | | /**温度环形图 */ |
| | | if (bellowsTempChart) { |
| | | bellowsTempChart.setOption({ |
| | | series: [{ data: [{ value: res.windTemp }] }, { data: [{ value: res.windTemp }] }], |
| | | series: [{ data: [{ value: res.trendVo.fanTemp }] }, { data: [{ value: res.trendVo.fanTemp }] }], |
| | | }) |
| | | } |
| | | /**风机频率环形图 */ |
| | |
| | | <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>--> |