Commit b48c70c8 by nningxx

大屏菜单调整

parent 4d4e63aa
...@@ -65,13 +65,17 @@ class ResMesBigScreen(http.Controller): ...@@ -65,13 +65,17 @@ class ResMesBigScreen(http.Controller):
def common_dws_interface(self, body=None, url='', cate=''): def common_dws_interface(self, body=None, url='', cate=''):
"""获取大屏数据""" """获取大屏数据"""
plant_name = body.get("plant_name", False) plant_name = body.get("plant_name", '')
today = body.get("today", False) today = body.get("today", '')
if not today: device_code_list = body.get("device_code_list", [])
today = fields.Date.today().strftime('%Y-%m-%d') # if not today:
category_name = body.get("category_name", False) # today = fields.Date.today().strftime('%Y-%m-%d')
category_name = body.get("category_name",'')
# 构建查询条件 # 构建查询条件
equipment_list = self.search_equipments(plant_name=plant_name, category_name=category_name) if device_code_list:
equipment_list = device_code_list
else:
equipment_list = self.search_equipments(plant_name=plant_name, category_name=category_name)
try: try:
api_path = dws_platform_url + url api_path = dws_platform_url + url
payload = { payload = {
......
...@@ -364,6 +364,44 @@ ...@@ -364,6 +364,44 @@
}) })
}) })
}, },
requestSelfApi(
url,
config = {},
errorMessage = "操作失败,请稍后重试",
contentType = "application/json",
baseurl="https://tht.dws.rokecloud.com"
) {
return new Promise((resolve, reject) => {
if (!url) reject(null)
axios({
method: "POST",
url: baseurl + url,
data: config,
headers: { "Content-Type": contentType },
}).then((result) => {
if (
result?.data?.result?.success ||
result?.data?.result?.code == 0 ||
result?.data?.result?.state == "success" ||
result?.data?.code == 0
) {
resolve(result.data)
} else if (result?.data?.result?.code == 1) {
reject(result.data.result.message)
} else if (result?.data?.result?.state == "error") {
reject(result.data.result.megs)
} else if (result?.data?.code == 1) {
reject(result.data.message)
} else if (!result?.data?.result?.success) {
reject(result.data.result.msg)
} else if (result?.data?.error) {
reject(result.data.error.message)
}
}).catch((error) => {
reject(errorMessage)
})
})
},
// 接口请求Dws系统方法封装 // 接口请求Dws系统方法封装
requestDwsApi( requestDwsApi(
url, url,
...@@ -403,11 +441,12 @@ ...@@ -403,11 +441,12 @@
useRatio: []// 设备资源利用率 useRatio: []// 设备资源利用率
} }
// 查询烟熏机数据 // 查询烟熏机数据
await this.requestDwsApi('/public/device/get_yanxunlu_data', { await this.requestSelfApi('/get_yanxunlu_data', {
"plant_name": "蒸煮车间", "plant_name": "蒸煮车间",
"category_name": "烟熏炉" "category_name": "烟熏炉",
'today':'',
}).then(result => { }).then(result => {
result.data.forEach(item => { result.result.data.forEach(item => {
smudgingChance.xAxisData.push(item.device_name) smudgingChance.xAxisData.push(item.device_name)
smudgingChance.processTime.push(item.process) smudgingChance.processTime.push(item.process)
smudgingChance.temperatureX.push(item.temperatureX) smudgingChance.temperatureX.push(item.temperatureX)
...@@ -415,9 +454,10 @@ ...@@ -415,9 +454,10 @@
}) })
}).catch(error => { console.error(error) }) }).catch(error => { console.error(error) })
// 查询烟熏机设备资源利用率 // 查询烟熏机设备资源利用率
await this.requestDwsApi('/public/device/big_screen_today', { await this.requestSelfApi('/big_screen_today', {
"plant_name": "蒸煮车间", "plant_name": "蒸煮车间",
"category_name": "烟熏炉" "category_name": "烟熏炉",
'today':'',
}).then(result => { }).then(result => {
}).catch(error => { console.error(error) }) }).catch(error => { console.error(error) })
setTimeout(() => { setTimeout(() => {
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
<html lang="zh-CN"> <html lang="zh-CN">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8"/>
<title>预料工序</title> <title>预料工序</title>
<meta content="width=device-width,initial-scale=1.0, maximum-scale=1.0,user-scalable=0" name="viewport" /> <meta content="width=device-width,initial-scale=1.0, maximum-scale=1.0,user-scalable=0" name="viewport"/>
<link rel="stylesheet" href="/tht_project/static/html/big_screen/element-ui/index.css" /> <link rel="stylesheet" href="/tht_project/static/html/big_screen/element-ui/index.css"/>
<script src="/tht_project/static/html/big_screen/js/echarts.min.js"></script> <script src="/tht_project/static/html/big_screen/js/echarts.min.js"></script>
<script src="/tht_project/static/html/big_screen/js/moment.min.js"></script> <script src="/tht_project/static/html/big_screen/js/moment.min.js"></script>
<script src="/tht_project/static/html/big_screen/js/vue.js"></script> <script src="/tht_project/static/html/big_screen/js/vue.js"></script>
...@@ -14,156 +14,156 @@ ...@@ -14,156 +14,156 @@
</head> </head>
<body id="bodyId" style="display: none"> <body id="bodyId" style="display: none">
<div id="app" v-loading.body.fullscreen.lock="loading" ref="fullScreenElement"> <div id="app" v-loading.body.fullscreen.lock="loading" ref="fullScreenElement">
<div class="pageHeaderBox"> <div class="pageHeaderBox">
<div class="weatherInfo"> <div class="weatherInfo">
<span class="location">预料工序</span> <span class="location">预料工序</span>
</div> </div>
<img class="logo" src="/tht_project/static/html/big_screen/image/logo.png"> <img class="logo" src="/tht_project/static/html/big_screen/image/logo.png">
<div class="title">天合堂数据指挥中心可视化大屏</div> <div class="title">天合堂数据指挥中心可视化大屏</div>
<div class="dateTimeBox"> <div class="dateTimeBox">
<i style="font-size: 30px;margin-right: 10px;" @click="toggleFullscreen" <i style="font-size: 30px;margin-right: 10px;" @click="toggleFullscreen"
:class="isFullscreen ? 'el-icon-close' : 'el-icon-full-screen'"></i> :class="isFullscreen ? 'el-icon-close' : 'el-icon-full-screen'"></i>
<div class="time">[[currentTime]]</div> <div class="time">[[currentTime]]</div>
<div class="dateBox"> <div class="dateBox">
<span>[[ currentDate ]]</span> <span>[[ currentDate ]]</span>
<span>[[ currentWeek ]]</span> <span>[[ currentWeek ]]</span>
</div>
</div> </div>
</div> </div>
<div class="pageContentBox"> </div>
<div class="pageContentBackgroundBox"> <div class="pageContentBox">
<img class="badgeIcon" src="/tht_project/static/html/big_screen/image/777.png" alt="" v-for="item in 4" <div class="pageContentBackgroundBox">
:key="item"> <img class="badgeIcon" src="/tht_project/static/html/big_screen/image/777.png" alt="" v-for="item in 4"
:key="item">
</div>
<div class="pageContentArea">
<div class="contentColumnBox one">
<div class="itemCardBox">
<div class="cardHeader">
<span>今日产量</span>
</div>
<div class="cardContentBox">
<div id="proportionChart" style="width: 100%; height: 100%;"></div>
</div>
</div>
<div class="itemCardBox">
<div class="cardHeader">
<span>今日投料情况</span>
</div>
<div class="cardContentBox">
<div id="mainMaterialChart" style="width: 100%; height: 100%;"></div>
</div>
</div>
<div class="itemCardBox">
<div class="cardHeader">
<span>设备实时运转情况</span>
</div>
<div class="cardContentBox">
<div id="seasonMaterialChart" style="width: 100%; height: 100%;"></div>
</div>
</div>
<div class="itemCardBox">
<div class="cardHeader">
<span>设备资源利用率</span>
</div>
<div class="cardContentBox">
<div id="rawMaterialChart" style="width: 100%; height: 100%;"></div>
</div>
</div>
</div> </div>
<div class="pageContentArea"> <div class="contentColumnBox two">
<div class="contentColumnBox one"> <div class="itemCardBox">
<div class="itemCardBox"> <div class="cardHeader">
<div class="cardHeader"> <span>片冰机</span>
<span>今日产量</span>
</div>
<div class="cardContentBox">
<div id="proportionChart" style="width: 100%; height: 100%;"></div>
</div>
</div> </div>
<div class="itemCardBox"> <div class="cardContentBox">
<div class="cardHeader"> <div id="sliceIceMachineChart" style="width: 100%; height: 100%;"></div>
<span>今日投料情况</span>
</div>
<div class="cardContentBox">
<div id="mainMaterialChart" style="width: 100%; height: 100%;"></div>
</div>
</div> </div>
<div class="itemCardBox"> </div>
<div class="cardHeader"> <div class="itemCardBox">
<span>设备实时运转情况</span> <div class="cardHeader">
</div> <span>解冻机组</span>
<div class="cardContentBox">
<div id="seasonMaterialChart" style="width: 100%; height: 100%;"></div>
</div>
</div> </div>
<div class="itemCardBox"> <div class="cardContentBox">
<div class="cardHeader"> <div id="thawingUnitChart" style="width: 100%; height: 100%;"></div>
<span>设备资源利用率</span>
</div>
<div class="cardContentBox">
<div id="rawMaterialChart" style="width: 100%; height: 100%;"></div>
</div>
</div> </div>
</div> </div>
<div class="contentColumnBox two"> <div class="itemCardBox">
<div class="itemCardBox"> <div class="cardHeader">
<div class="cardHeader"> <span>切丁机组</span>
<span>片冰机</span>
</div>
<div class="cardContentBox">
<div id="sliceIceMachineChart" style="width: 100%; height: 100%;"></div>
</div>
</div> </div>
<div class="itemCardBox"> <div class="cardContentBox">
<div class="cardHeader"> <div style="width: 100%; height: 100%; display: flex;">
<span>解冻机组</span> <div id="dicingUnitLineChart" style="width: 65%; height: 100%;"></div>
</div> <div id="dicingUnitGaugeChart" style="width: 35%; height: 100%;"></div>
<div class="cardContentBox">
<div id="thawingUnitChart" style="width: 100%; height: 100%;"></div>
</div> </div>
</div> </div>
<div class="itemCardBox"> </div>
<div class="cardHeader"> <div class="itemCardBox">
<span>切丁机组</span> <div class="cardHeader">
</div> <span>连续切块机</span>
<div class="cardContentBox">
<div style="width: 100%; height: 100%; display: flex;">
<div id="dicingUnitLineChart" style="width: 65%; height: 100%;"></div>
<div id="dicingUnitGaugeChart" style="width: 35%; height: 100%;"></div>
</div>
</div>
</div> </div>
<div class="itemCardBox"> <div class="cardContentBox">
<div class="cardHeader"> <div style="width: 100%; height: 100%; display: flex;">
<span>连续切块机</span> <div id="continuouSlabberLeftChart" style="width: 50%; height: 100%;"></div>
</div> <div id="continuouSlabberRightChart" style="width: 50%; height: 100%;"></div>
<div class="cardContentBox">
<div style="width: 100%; height: 100%; display: flex;">
<div id="continuouSlabberLeftChart" style="width: 50%; height: 100%;"></div>
<div id="continuouSlabberRightChart" style="width: 50%; height: 100%;"></div>
</div>
</div> </div>
</div> </div>
<div class="itemCardBox" style="position: relative;"> </div>
<div class="cardHeader" style="position: absolute;top: 5px; width: 100%;"> <div class="itemCardBox" style="position: relative;">
<span>绞肉机</span> <div class="cardHeader" style="position: absolute;top: 5px; width: 100%;">
</div> <span>绞肉机</span>
<div class="cardContentBox" style="z-index: 1;"> </div>
<div id="meatGrinderChart" style="width: 100%; height: 100%;"></div> <div class="cardContentBox" style="z-index: 1;">
</div> <div id="meatGrinderChart" style="width: 100%; height: 100%;"></div>
</div> </div>
</div> </div>
<div class="contentColumnBox three"> </div>
<div class="itemCardBox"> <div class="contentColumnBox three">
<div class="cardHeader"> <div class="itemCardBox">
<span>斩拌机</span> <div class="cardHeader">
</div> <span>斩拌机</span>
<div class="cardContentBox">
<div id="ZBY550ChopperMixerChart" style="width: 100%; height: 100%;"></div>
</div>
</div> </div>
<div class="itemCardBox"> <div class="cardContentBox">
<div class="cardHeader"> <div id="ZBY550ChopperMixerChart" style="width: 100%; height: 100%;"></div>
<span>真空搅拌机</span>
</div>
<div class="cardContentBox">
<div style="width: 100%; height: 100%; display: flex;flex-wrap: wrap;">
<div id="vacuumMixerRotateSpeedChart" style="width: 50%; height: 50%;"></div>
<div id="vacuumMixerRunTimeChart" style="width: 50%; height: 50%;"></div>
<div id="vacuumMixerRemainTimeChart" style="width: 50%; height: 50%;"></div>
<div id="vacuumMixerCWVoltageChart" style="width: 50%; height: 50%;"></div>
</div>
</div>
</div> </div>
<div class="itemCardBox"> </div>
<div class="cardHeader"> <div class="itemCardBox">
<span>真空滚揉机</span> <div class="cardHeader">
</div> <span>真空搅拌机</span>
<div class="cardContentBox"> </div>
<div style="width: 100%; height: 100%; display: flex;flex-wrap: wrap;"> <div class="cardContentBox">
<div id="vacuumTumblingRotateSpeedChart" style="width: 50%; height: 50%;"></div> <div style="width: 100%; height: 100%; display: flex;flex-wrap: wrap;">
<div id="vacuumTumblingRunTimeChart" style="width: 50%; height: 50%;"></div> <div id="vacuumMixerRotateSpeedChart" style="width: 50%; height: 50%;"></div>
<div id="vacuumTumblingRemainTimeChart" style="width: 50%; height: 50%;"></div> <div id="vacuumMixerRunTimeChart" style="width: 50%; height: 50%;"></div>
</div> <div id="vacuumMixerRemainTimeChart" style="width: 50%; height: 50%;"></div>
<div id="vacuumMixerCWVoltageChart" style="width: 50%; height: 50%;"></div>
</div> </div>
</div> </div>
</div> </div>
<div class="contentColumnBox four"> <div class="itemCardBox">
<div class="itemCardBox"> <div class="cardHeader">
<div class="cardHeader"> <span>真空滚揉机</span>
<span>报警中心</span> </div>
<div class="cardContentBox">
<div style="width: 100%; height: 100%; display: flex;flex-wrap: wrap;">
<div id="vacuumTumblingRotateSpeedChart" style="width: 50%; height: 50%;"></div>
<div id="vacuumTumblingRunTimeChart" style="width: 50%; height: 50%;"></div>
<div id="vacuumTumblingRemainTimeChart" style="width: 50%; height: 50%;"></div>
</div> </div>
<div class="cardContentBox tableBox"> </div>
<el-table class="tableClass" :data="alarmList" height="1" tooltip-effect="light" </div>
:row-style="{height: '30px', backgroundColor: 'transparent'}" </div>
:cell-style="{padding: '5px 0', borderBottom:'none'}" <div class="contentColumnBox four">
:header-row-style="{ backgroundColor: 'transparent'}" :header-cell-style="{ <div class="itemCardBox">
<div class="cardHeader">
<span>报警中心</span>
</div>
<div class="cardContentBox tableBox">
<el-table class="tableClass" :data="alarmList" height="1" tooltip-effect="light"
:row-style="{height: '30px', backgroundColor: 'transparent'}"
:cell-style="{padding: '5px 0', borderBottom:'none'}"
:header-row-style="{ backgroundColor: 'transparent'}" :header-cell-style="{
backgroundColor: 'transparent', backgroundColor: 'transparent',
color: '#01c4f9', color: '#01c4f9',
fontWeight: 'bold', fontWeight: 'bold',
...@@ -173,36 +173,36 @@ ...@@ -173,36 +173,36 @@
padding: '5px 0', padding: '5px 0',
borderBottom:'none' borderBottom:'none'
}"> }">
<el-table-column prop="device" label="报警类型"> <el-table-column prop="device" label="报警类型">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #fff; font-size: 12px;">[[ scope.row.device ]]</span> <span style="color: #fff; font-size: 12px;">[[ scope.row.device ]]</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="time" label="报警时间" width="80"> <el-table-column prop="time" label="报警时间" width="80">
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #fff; font-size: 12px;">[[ scope.row.time ]]</span> <span style="color: #fff; font-size: 12px;">[[ scope.row.time ]]</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="detail" label="报警描述" show-overflow-tooltip> <el-table-column prop="detail" label="报警描述" show-overflow-tooltip>
<template slot-scope="scope"> <template slot-scope="scope">
<span style="color: #fff; font-size: 12px;">[[ scope.row.detail ]]</span> <span style="color: #fff; font-size: 12px;">[[ scope.row.detail ]]</span>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div>
</div> </div>
<div class="itemCardBox"> </div>
<div class="cardHeader"> <div class="itemCardBox">
<span>今日计划执行情况</span> <div class="cardHeader">
</div> <span>今日计划执行情况</span>
<div class="cardContentBox"> </div>
<div id="meatGrainAnalysisChart" style="width: 100%; height: 100%;"></div> <div class="cardContentBox">
</div> <div id="meatGrainAnalysisChart" style="width: 100%; height: 100%;"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
</body> </body>
<script> <script>
...@@ -347,7 +347,7 @@ ...@@ -347,7 +347,7 @@
method: "POST", method: "POST",
url: this.baseURL + url, url: this.baseURL + url,
data: config, data: config,
headers: { "Content-Type": contentType }, headers: {"Content-Type": contentType},
}).then((result) => { }).then((result) => {
if ( if (
result?.data?.result?.code == 0 || result?.data?.result?.code == 0 ||
...@@ -369,6 +369,44 @@ ...@@ -369,6 +369,44 @@
}) })
}) })
}, },
requestSelfApi(
url,
config = {},
errorMessage = "操作失败,请稍后重试",
contentType = "application/json",
baseurl = "https://tht.dws.rokecloud.com"
) {
return new Promise((resolve, reject) => {
if (!url) reject(null)
axios({
method: "POST",
url: baseurl + url,
data: config,
headers: {"Content-Type": contentType},
}).then((result) => {
if (
result?.data?.result?.success ||
result?.data?.result?.code == 0 ||
result?.data?.result?.state == "success" ||
result?.data?.code == 0
) {
resolve(result.data)
} else if (result?.data?.result?.code == 1) {
reject(result.data.result.message)
} else if (result?.data?.result?.state == "error") {
reject(result.data.result.megs)
} else if (result?.data?.code == 1) {
reject(result.data.message)
} else if (!result?.data?.result?.success) {
reject(result.data.result.msg)
} else if (result?.data?.error) {
reject(result.data.error.message)
}
}).catch((error) => {
reject(errorMessage)
})
})
},
// 接口请求Dws系统方法封装 // 接口请求Dws系统方法封装
requestDwsApi( requestDwsApi(
url, url,
...@@ -382,7 +420,7 @@ ...@@ -382,7 +420,7 @@
method: "POST", method: "POST",
url: this.dwsBaseUrl + url, url: this.dwsBaseUrl + url,
data: config, data: config,
headers: { "Content-Type": contentType }, headers: {"Content-Type": contentType},
}).then((result) => { }).then((result) => {
if (result?.data?.success) { if (result?.data?.success) {
resolve(result.data) resolve(result.data)
...@@ -412,44 +450,68 @@ ...@@ -412,44 +450,68 @@
"today": "2025-03-28", "today": "2025-03-28",
}).then(result => { }).then(result => {
proportionData = result.result.data proportionData = result.result.data
}).catch(error => { console.error(error) }) }).catch(error => {
console.error(error)
})
// 查询今日投料情况 // 查询今日投料情况
await this.requestApi('/roke/big_screen_kanban/today_material_input', { await this.requestApi('/roke/big_screen_kanban/today_material_input', {
"process_code": "001", "process_code": "001",
"today": "2025-03-28", "today": "2025-03-28",
}).then(result => { }).then(result => {
mainMaterialData = result.result.data mainMaterialData = result.result.data
}).catch(error => { console.error(error) }) }).catch(error => {
console.error(error)
})
// 查询设备实时运转情况 // 查询设备实时运转情况
await this.requestDwsApi('/public/device/big_screen_count', { await this.requestSelfApi('/big_screen_count', {
"plant_name": "预料车间" "plant_name": "预料车间",
"category_name": '',
"today": ''
}).then(result => { }).then(result => {
seasonMaterialData = result.data seasonMaterialData = result.result.data
}).catch(error => { console.error(error) }) }).catch(error => {
console.error(error)
})
// 查询设备资源利用率 // 查询设备资源利用率
await this.requestDwsApi('/public/device/big_screen_today', { await this.requestSelfApi('/big_screen_today', {
"plant_name": "预料车间" "plant_name": "预料车间",
"category_name": '',
"today": ''
}).then(result => { }).then(result => {
rawMaterialData = result.data rawMaterialData = result.result.data
}).catch(error => { console.error(error) }) }).catch(error => {
console.error(error)
})
// 查询解冻机 // 查询解冻机
await this.requestDwsApi('/public/device/get_jiedongji_temperature', { await this.requestSelfApi('/get_jiedongji_temperature', {
"device_code_list": ['868892078264059'] "device_code_list": ['868892078264059'],
"category_name": '',
"today": '',
'plant_name': '',
}).then(result => { }).then(result => {
thawingUnitData = result.data thawingUnitData = result.result.data
}).catch(error => { console.error(error) }) }).catch(error => {
console.error(error)
})
// 查询连续切块机 // 查询连续切块机
await this.requestDwsApi('/public/device/get_qiekuaiji_data', { await this.requestSelfApi('/get_qiekuaiji_data', {
"device_code_list": ['868892078346237'] "device_code_list": ['868892078346237'],
"category_name": '',
"today": '',
'plant_name': '',
}).then(result => { }).then(result => {
continuouSlabberData = result.data continuouSlabberData = result.result.data
}).catch(error => { console.error(error) }) }).catch(error => {
console.error(error)
})
// 查询今日计划执行情况 // 查询今日计划执行情况
await this.requestApi('/roke/big_screen_kanban/today_production_summary', { await this.requestApi('/roke/big_screen_kanban/today_production_summary', {
"order_department_code": "001", "order_department_code": "001",
}).then(result => { }).then(result => {
meatGrainAnalysisData = result.result.data meatGrainAnalysisData = result.result.data
}).catch(error => { console.error(error) }) }).catch(error => {
console.error(error)
})
setTimeout(() => { setTimeout(() => {
this.initProportionChart(proportionData) this.initProportionChart(proportionData)
this.initMainMaterialChart(mainMaterialData) this.initMainMaterialChart(mainMaterialData)
...@@ -496,7 +558,7 @@ ...@@ -496,7 +558,7 @@
}, },
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
axisPointer: { type: 'shadow' }, axisPointer: {type: 'shadow'},
formatter: (params) => { formatter: (params) => {
console.log(params) console.log(params)
let tooltipHtml = `<div style="font-weight:bold;margin-bottom:5px">${params[0].name}</div>` let tooltipHtml = `<div style="font-weight:bold;margin-bottom:5px">${params[0].name}</div>`
...@@ -526,24 +588,24 @@ ...@@ -526,24 +588,24 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: seriesData, data: seriesData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -601,18 +663,18 @@ ...@@ -601,18 +663,18 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}' } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}'}
}, },
series: [{ series: [{
type: 'line', type: 'line',
...@@ -666,19 +728,19 @@ ...@@ -666,19 +728,19 @@
data: [{ data: [{
value: data?.green || 0, value: data?.green || 0,
name: '运行', name: '运行',
itemStyle: { color: '#91cc75' }, itemStyle: {color: '#91cc75'},
}, { }, {
value: data?.yellow || 0, value: data?.yellow || 0,
name: '等待', name: '等待',
itemStyle: { color: '#ffd700' }, itemStyle: {color: '#ffd700'},
}, { }, {
value: data?.red || 0, value: data?.red || 0,
name: '故障', name: '故障',
itemStyle: { color: '#ee6666' }, itemStyle: {color: '#ee6666'},
}, { }, {
value: data?.gray || 0, value: data?.gray || 0,
name: '关机', name: '关机',
itemStyle: { color: '#787878' }, itemStyle: {color: '#787878'},
}] }]
}] }]
}) })
...@@ -726,24 +788,24 @@ ...@@ -726,24 +788,24 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}%' } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}%'}
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: seriesData, data: seriesData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -785,24 +847,24 @@ ...@@ -785,24 +847,24 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}℃' } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}℃'}
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: seriesData, data: seriesData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -835,22 +897,22 @@ ...@@ -835,22 +897,22 @@
startAngle: 200, startAngle: 200,
endAngle: -20, endAngle: -20,
splitNumber: 5, splitNumber: 5,
itemStyle: { color: '#3a8fff' }, itemStyle: {color: '#3a8fff'},
progress: { show: true, width: 5 }, progress: {show: true, width: 5},
pointer: { show: false }, pointer: {show: false},
axisLine: { lineStyle: { width: 5 } }, axisLine: {lineStyle: {width: 5}},
axisTick: { axisTick: {
distance: -15, distance: -15,
length: 5, length: 5,
splitNumber: 5, splitNumber: 5,
lineStyle: { width: 1, color: '#999' } lineStyle: {width: 1, color: '#999'}
}, },
splitLine: { splitLine: {
distance: -15, distance: -15,
length: 8, length: 8,
lineStyle: { width: 1, color: '#999' } lineStyle: {width: 1, color: '#999'}
}, },
axisLabel: { distance: -15, color: '#999', fontSize: 10, }, axisLabel: {distance: -15, color: '#999', fontSize: 10,},
detail: { detail: {
valueAnimation: true, valueAnimation: true,
offsetCenter: [0, 0], offsetCenter: [0, 0],
...@@ -877,22 +939,22 @@ ...@@ -877,22 +939,22 @@
seriesData.push(data) seriesData.push(data)
} }
chart.setOption({ chart.setOption({
grid: { left: '5%', right: '5%', top: '8%', bottom: '5%' }, grid: {left: '5%', right: '5%', top: '8%', bottom: '5%'},
graphic: [{ graphic: [{
type: 'text', type: 'text',
left: '12%', left: '12%',
top: '80%', top: '80%',
style: { text: '当前库内温度', fill: '#fff', fontSize: 10 } style: {text: '当前库内温度', fill: '#fff', fontSize: 10}
}, { }, {
type: 'text', type: 'text',
left: '45.5%', left: '45.5%',
top: '80%', top: '80%',
style: { text: '中心温度', fill: '#fff', fontSize: 10 } style: {text: '中心温度', fill: '#fff', fontSize: 10}
}, { }, {
type: 'text', type: 'text',
left: '75.5%', left: '75.5%',
top: '80%', top: '80%',
style: { text: '库内湿度', fill: '#fff', fontSize: 10 } style: {text: '库内湿度', fill: '#fff', fontSize: 10}
}], }],
series: seriesData series: seriesData
}) })
...@@ -929,24 +991,24 @@ ...@@ -929,24 +991,24 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}' + unit } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}' + unit}
}, },
series: [{ series: [{
type: 'line', type: 'line',
data: seriesData, data: seriesData,
smooth: true, smooth: true,
lineStyle: { type: 'dashed' }, lineStyle: {type: 'dashed'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -956,8 +1018,8 @@ ...@@ -956,8 +1018,8 @@
}, },
areaStyle: { areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: 'rgba(58, 143, 255, 0.8)' }, {offset: 0, color: 'rgba(58, 143, 255, 0.8)'},
{ offset: 1, color: 'rgba(58, 143, 255, 0.1)' } {offset: 1, color: 'rgba(58, 143, 255, 0.1)'}
]) ])
}, },
}] }]
...@@ -971,22 +1033,22 @@ ...@@ -971,22 +1033,22 @@
startAngle: 200, startAngle: 200,
endAngle: -20, endAngle: -20,
splitNumber: 5, splitNumber: 5,
itemStyle: { color: '#3a8fff' }, itemStyle: {color: '#3a8fff'},
progress: { show: false, width: 5 }, progress: {show: false, width: 5},
pointer: { itemStyle: { color: '#fe827a', }, length: "60%", width: 3 }, pointer: {itemStyle: {color: '#fe827a',}, length: "60%", width: 3},
axisLine: { axisLine: {
roundCap: true, roundCap: true,
lineStyle: { lineStyle: {
width: 5, width: 5,
color: [[1, { color: [[1, {
type: 'linear', x: 0, y: 0, x2: 1, y2: 0, type: 'linear', x: 0, y: 0, x2: 1, y2: 0,
colorStops: [{ offset: 0, color: '#91cc75' }, { offset: 1, color: '#ff4b4b' }] colorStops: [{offset: 0, color: '#91cc75'}, {offset: 1, color: '#ff4b4b'}]
}]] }]]
} }
}, },
axisTick: { show: false }, axisTick: {show: false},
splitLine: { show: false }, splitLine: {show: false},
axisLabel: { show: false }, axisLabel: {show: false},
detail: { detail: {
valueAnimation: true, valueAnimation: true,
width: '40%', width: '40%',
...@@ -996,8 +1058,8 @@ ...@@ -996,8 +1058,8 @@
fontWeight: 'bold', fontWeight: 'bold',
offsetCenter: [0, '40%'] offsetCenter: [0, '40%']
}, },
data: [{ value: 50, name: "加速时间" }], data: [{value: 50, name: "加速时间"}],
title: { color: "#FFF", fontSize: 10, valueAnimation: false, offsetCenter: ['0', '70%'] } title: {color: "#FFF", fontSize: 10, valueAnimation: false, offsetCenter: ['0', '70%']}
}] }]
}) })
}, },
...@@ -1042,24 +1104,24 @@ ...@@ -1042,24 +1104,24 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: runFrequencyMax, max: runFrequencyMax,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}Hz' } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}Hz'}
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: runFrequencyData, data: runFrequencyData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1090,8 +1152,8 @@ ...@@ -1090,8 +1152,8 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
...@@ -1099,16 +1161,16 @@ ...@@ -1099,16 +1161,16 @@
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: cuttingSpeedMax, max: cuttingSpeedMax,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}ppm' } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}ppm'}
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: cuttingSpeedData, data: cuttingSpeedData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1152,31 +1214,31 @@ ...@@ -1152,31 +1214,31 @@
top: '0%', top: '0%',
itemWidth: 10, itemWidth: 10,
itemHeight: 10, itemHeight: 10,
textStyle: { color: "#fff", fontSize: 10 } textStyle: {color: "#fff", fontSize: 10}
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}' + unit } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}' + unit}
}, },
series: [{ series: [{
name: '设备A', name: '设备A',
type: 'line', type: 'line',
data: deviceA, data: deviceA,
smooth: true, smooth: true,
lineStyle: { type: 'dashed' }, lineStyle: {type: 'dashed'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1186,8 +1248,8 @@ ...@@ -1186,8 +1248,8 @@
}, },
areaStyle: { areaStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: 'rgba(58, 143, 255, 0.8)' }, {offset: 0, color: 'rgba(58, 143, 255, 0.8)'},
{ offset: 1, color: 'rgba(58, 143, 255, 0.1)' } {offset: 1, color: 'rgba(58, 143, 255, 0.1)'}
]) ])
}, },
}, { }, {
...@@ -1195,7 +1257,7 @@ ...@@ -1195,7 +1257,7 @@
type: 'line', type: 'line',
data: deviceB, data: deviceB,
smooth: true, smooth: true,
lineStyle: { type: 'dashed' }, lineStyle: {type: 'dashed'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1243,18 +1305,18 @@ ...@@ -1243,18 +1305,18 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#ccc', fontSize: 10, formatter: '{value}' + unit } axisLabel: {color: '#ccc', fontSize: 10, formatter: '{value}' + unit}
}, },
series: [{ series: [{
type: 'line', type: 'line',
...@@ -1312,24 +1374,24 @@ ...@@ -1312,24 +1374,24 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}ppm' } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}ppm'}
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: seriesData, data: seriesData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1364,18 +1426,18 @@ ...@@ -1364,18 +1426,18 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#ccc', fontSize: 10, formatter: '{value}' + 'min' } axisLabel: {color: '#ccc', fontSize: 10, formatter: '{value}' + 'min'}
}, },
series: [{ series: [{
type: 'line', type: 'line',
...@@ -1414,18 +1476,18 @@ ...@@ -1414,18 +1476,18 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#ccc', fontSize: 10, formatter: '{value}' + 'min' } axisLabel: {color: '#ccc', fontSize: 10, formatter: '{value}' + 'min'}
}, },
series: [{ series: [{
type: 'line', type: 'line',
...@@ -1464,18 +1526,18 @@ ...@@ -1464,18 +1526,18 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#ccc', fontSize: 10, formatter: '{value}' + 'kpa' } axisLabel: {color: '#ccc', fontSize: 10, formatter: '{value}' + 'kpa'}
}, },
series: [{ series: [{
type: 'line', type: 'line',
...@@ -1531,24 +1593,24 @@ ...@@ -1531,24 +1593,24 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10, formatter: '{value}ppm' } axisLabel: {color: '#fff', fontSize: 10, formatter: '{value}ppm'}
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: seriesData, data: seriesData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1583,18 +1645,18 @@ ...@@ -1583,18 +1645,18 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#ccc', fontSize: 10, formatter: '{value}' + 'min' } axisLabel: {color: '#ccc', fontSize: 10, formatter: '{value}' + 'min'}
}, },
series: [{ series: [{
type: 'line', type: 'line',
...@@ -1633,18 +1695,18 @@ ...@@ -1633,18 +1695,18 @@
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: xAxisData, data: xAxisData,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
axisTick: { show: false }, axisTick: {show: false},
axisLabel: { color: '#fff', fontSize: 10, interval: 0 } axisLabel: {color: '#fff', fontSize: 10, interval: 0}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 4, splitNumber: 4,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed' } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3, type: 'dashed'}},
axisLabel: { color: '#ccc', fontSize: 10, formatter: '{value}' + 'min' } axisLabel: {color: '#ccc', fontSize: 10, formatter: '{value}' + 'min'}
}, },
series: [{ series: [{
type: 'line', type: 'line',
...@@ -1695,13 +1757,13 @@ ...@@ -1695,13 +1757,13 @@
legend: { legend: {
top: '-2%', top: '-2%',
right: '5%', right: '5%',
textStyle: { color: '#fff', fontSize: 10 }, textStyle: {color: '#fff', fontSize: 10},
itemWidth: 20, itemWidth: 20,
itemHeight: 10, itemHeight: 10,
}, },
tooltip: { tooltip: {
trigger: 'axis', trigger: 'axis',
axisPointer: { type: 'shadow' }, axisPointer: {type: 'shadow'},
formatter: (params) => { formatter: (params) => {
let tooltipHtml = `<div style="font-weight:bold;margin-bottom:5px">${params[0].name}</div>` let tooltipHtml = `<div style="font-weight:bold;margin-bottom:5px">${params[0].name}</div>`
...@@ -1740,17 +1802,17 @@ ...@@ -1740,17 +1802,17 @@
xAxis: { xAxis: {
type: 'category', type: 'category',
data: xAxisData, data: xAxisData,
axisLine: { lineStyle: { color: '#0a73ff' } }, axisLine: {lineStyle: {color: '#0a73ff'}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
splitNumber: 5, splitNumber: 5,
min: 0, min: 0,
max: max, max: max,
axisLine: { show: true, lineStyle: { color: '#0a73ff' } }, axisLine: {show: true, lineStyle: {color: '#0a73ff'}},
splitLine: { lineStyle: { color: '#0a73ff', width: 0.5, opacity: 0.3 } }, splitLine: {lineStyle: {color: '#0a73ff', width: 0.5, opacity: 0.3}},
axisLabel: { color: '#fff', fontSize: 10 } axisLabel: {color: '#fff', fontSize: 10}
}, },
series: [{ series: [{
name: '投产数量', name: '投产数量',
...@@ -1758,7 +1820,7 @@ ...@@ -1758,7 +1820,7 @@
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: operationData, data: operationData,
itemStyle: { color: '#5087ec' }, itemStyle: {color: '#5087ec'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1772,7 +1834,7 @@ ...@@ -1772,7 +1834,7 @@
barWidth: '40%', barWidth: '40%',
barGap: '0%', barGap: '0%',
data: quantityData, data: quantityData,
itemStyle: { color: '#68bbc4' }, itemStyle: {color: '#68bbc4'},
label: { label: {
show: true, show: true,
position: 'top', position: 'top',
...@@ -1784,12 +1846,12 @@ ...@@ -1784,12 +1846,12 @@
}) })
}, },
/** /**
* 计算图表Y轴最大值 * 计算图表Y轴最大值
* @param {Array} dataArrays 需要合并计算的数据数组 * @param {Array} dataArrays 需要合并计算的数据数组
* @param {number} multiplier 放大系数,默认1.2 * @param {number} multiplier 放大系数,默认1.2
* @param {number} defaultValue 默认最大值,当无数据时使用 * @param {number} defaultValue 默认最大值,当无数据时使用
* @returns {number} 计算后的最大值 * @returns {number} 计算后的最大值
*/ */
calculateMaxValue(dataArrays, multiplier = 1.2, defaultValue = 100) { calculateMaxValue(dataArrays, multiplier = 1.2, defaultValue = 100) {
// 合并所有数组并提取value值 // 合并所有数组并提取value值
const allValues = dataArrays.flat().map(item => item.value); const allValues = dataArrays.flat().map(item => item.value);
...@@ -1924,9 +1986,9 @@ ...@@ -1924,9 +1986,9 @@
border-radius: 10px; border-radius: 10px;
animation: rainbow-glow 5s linear infinite; animation: rainbow-glow 5s linear infinite;
box-shadow: -10px 0 10px -10px #ff0000, box-shadow: -10px 0 10px -10px #ff0000,
10px 0 10px -10px #ff0000, 10px 0 10px -10px #ff0000,
inset -10px 0 10px -10px #ff0000, inset -10px 0 10px -10px #ff0000,
inset 10px 0 10px -10px #ff0000; inset 10px 0 10px -10px #ff0000;
background-color: transparent; background-color: transparent;
.badgeIcon { .badgeIcon {
...@@ -2012,7 +2074,7 @@ ...@@ -2012,7 +2074,7 @@
width: 100%; width: 100%;
background-color: transparent; background-color: transparent;
.el-table__body tr:hover>td.el-table__cell { .el-table__body tr:hover > td.el-table__cell {
background-color: rgba(10, 115, 255, 0.3); background-color: rgba(10, 115, 255, 0.3);
} }
} }
...@@ -2085,63 +2147,63 @@ ...@@ -2085,63 +2147,63 @@
@keyframes rainbow-glow { @keyframes rainbow-glow {
0% { 0% {
box-shadow: -10px 0 10px -10px #ff0000, box-shadow: -10px 0 10px -10px #ff0000,
10px 0 10px -10px #ff0000, 10px 0 10px -10px #ff0000,
inset -10px 0 10px -10px #ff0000, inset -10px 0 10px -10px #ff0000,
inset 10px 0 10px -10px #ff0000; inset 10px 0 10px -10px #ff0000;
border-left-color: #ff0000; border-left-color: #ff0000;
border-right-color: #ff0000; border-right-color: #ff0000;
} }
16% { 16% {
box-shadow: -10px 0 10px -10px #ff9900, box-shadow: -10px 0 10px -10px #ff9900,
10px 0 10px -10px #ff9900, 10px 0 10px -10px #ff9900,
inset -10px 0 10px -10px #ff9900, inset -10px 0 10px -10px #ff9900,
inset 10px 0 10px -10px #ff9900; inset 10px 0 10px -10px #ff9900;
border-left-color: #ff9900; border-left-color: #ff9900;
border-right-color: #ff9900; border-right-color: #ff9900;
} }
33% { 33% {
box-shadow: -10px 0 10px -10px #ffff00, box-shadow: -10px 0 10px -10px #ffff00,
10px 0 10px -10px #ffff00, 10px 0 10px -10px #ffff00,
inset -10px 0 10px -10px #ffff00, inset -10px 0 10px -10px #ffff00,
inset 10px 0 10px -10px #ffff00; inset 10px 0 10px -10px #ffff00;
border-left-color: #ffff00; border-left-color: #ffff00;
border-right-color: #ffff00; border-right-color: #ffff00;
} }
50% { 50% {
box-shadow: -10px 0 10px -10px #33cc33, box-shadow: -10px 0 10px -10px #33cc33,
10px 0 10px -10px #33cc33, 10px 0 10px -10px #33cc33,
inset -10px 0 10px -10px #33cc33, inset -10px 0 10px -10px #33cc33,
inset 10px 0 10px -10px #33cc33; inset 10px 0 10px -10px #33cc33;
border-left-color: #33cc33; border-left-color: #33cc33;
border-right-color: #33cc33; border-right-color: #33cc33;
} }
66% { 66% {
box-shadow: -10px 0 10px -10px #0099ff, box-shadow: -10px 0 10px -10px #0099ff,
10px 0 10px -10px #0099ff, 10px 0 10px -10px #0099ff,
inset -10px 0 10px -10px #0099ff, inset -10px 0 10px -10px #0099ff,
inset 10px 0 10px -10px #0099ff; inset 10px 0 10px -10px #0099ff;
border-left-color: #0099ff; border-left-color: #0099ff;
border-right-color: #0099ff; border-right-color: #0099ff;
} }
83% { 83% {
box-shadow: -10px 0 10px -10px #6633ff, box-shadow: -10px 0 10px -10px #6633ff,
10px 0 10px -10px #6633ff, 10px 0 10px -10px #6633ff,
inset -10px 0 10px -10px #6633ff, inset -10px 0 10px -10px #6633ff,
inset 10px 0 10px -10px #6633ff; inset 10px 0 10px -10px #6633ff;
border-left-color: #6633ff; border-left-color: #6633ff;
border-right-color: #6633ff; border-right-color: #6633ff;
} }
100% { 100% {
box-shadow: -10px 0 10px -10px #ff0066, box-shadow: -10px 0 10px -10px #ff0066,
10px 0 10px -10px #ff0066, 10px 0 10px -10px #ff0066,
inset -10px 0 10px -10px #ff0066, inset -10px 0 10px -10px #ff0066,
inset 10px 0 10px -10px #ff0066; inset 10px 0 10px -10px #ff0066;
border-left-color: #ff0066; border-left-color: #ff0066;
border-right-color: #ff0066; border-right-color: #ff0066;
} }
......
...@@ -13,16 +13,16 @@ ...@@ -13,16 +13,16 @@
<field name="target">current</field> <field name="target">current</field>
</record> </record>
<menuitem id="roke_mes_equipment_kanban" name="设备看板" sequence="31" <!-- <menuitem id="roke_mes_equipment_kanban" name="设备看板" sequence="31"-->
parent="roke_mes_equipment.roke_mes_equipment_main_menu" <!-- parent="roke_mes_equipment.roke_mes_equipment_main_menu"-->
active="1"/> <!-- active="1"/>-->
<menuitem id="roke_mes_expected_process" name="预料看板" sequence="10" <menuitem id="roke_mes_expected_process" name="预料看板" sequence="10"
parent="tht_project.roke_mes_equipment_kanban"
action="action_expected_process" active="1"/> action="action_expected_process" active="1"/>
<menuitem id="roke_mes_cook_process" name="成型工序" sequence="20" <menuitem id="roke_mes_cook_process" name="成型工序" sequence="20"
parent="tht_project.roke_mes_equipment_kanban"
action="action_cook_process" active="1"/> action="action_cook_process" active="1"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment