Commit b48c70c8 by nningxx

大屏菜单调整

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