大屏项目初始化
29
.gitignore
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Compiled class file
|
||||||
|
*.class
|
||||||
|
|
||||||
|
# Log file
|
||||||
|
*.log
|
||||||
|
|
||||||
|
# BlueJ files
|
||||||
|
*.ctxt
|
||||||
|
|
||||||
|
# Mobile Tools for Java (J2ME)
|
||||||
|
.mtj.tmp/
|
||||||
|
|
||||||
|
# Package Files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.nar
|
||||||
|
*.ear
|
||||||
|
*.zip
|
||||||
|
*.tar.gz
|
||||||
|
*.rar
|
||||||
|
|
||||||
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
|
hs_err_pid*
|
||||||
|
|
||||||
|
# idea
|
||||||
|
/.idea/
|
||||||
|
**/target/
|
||||||
|
|
||||||
|
/log/
|
||||||
293
css/index.css
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
transform: scale(0.8);
|
||||||
|
background-image: url('../img/bj.png');
|
||||||
|
background-size: 1920px 1080px;
|
||||||
|
/* 背景图片覆盖整个元素 */
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
/* 背景图片不重复 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.riqi {
|
||||||
|
font-size: 20px;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shijian {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 45px;
|
||||||
|
color: rgb(254, 254, 254);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.datetime-box {
|
||||||
|
position: absolute;
|
||||||
|
top: 1%;
|
||||||
|
right: 1%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-end;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-container {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zi {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 15px;
|
||||||
|
text-align: center;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 55px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: linear-gradient(0deg, #fff, #00fff9, #fff);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
text-fill-color: transparent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.zi::before {
|
||||||
|
z-index: -1;
|
||||||
|
content: '数 据 可 视 化 看 板';
|
||||||
|
position: absolute;
|
||||||
|
text-shadow: 1px 1px 10px #00ddcf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
top: 100px;
|
||||||
|
width: 96%;
|
||||||
|
left: 2%;
|
||||||
|
height: 88%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lanes-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 75%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-column {
|
||||||
|
width: 32%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-header {
|
||||||
|
text-align: center;
|
||||||
|
color: #00fff9;
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
background: rgba(0, 255, 255, 0.1);
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-part {
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
background-image: url('../img/kuang.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-part .divHead {
|
||||||
|
position: absolute;
|
||||||
|
width: 84%;
|
||||||
|
height: 1px;
|
||||||
|
top: 6%; /* Changed from margin-top to top for height-relative positioning */
|
||||||
|
left: 8%;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
background-image: url('../img/kuang_tou.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-section {
|
||||||
|
height: 23%;
|
||||||
|
width: 100%;
|
||||||
|
background-image: url('../img/kuang.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
position: relative;
|
||||||
|
margin-top: 1%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-section .divHead {
|
||||||
|
position: absolute;
|
||||||
|
width: 20%;
|
||||||
|
height: 1px;
|
||||||
|
top: 10%; /* Changed from margin-top to top for height-relative positioning */
|
||||||
|
left: 1%;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
background-image: url('../img/kuang_tou.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divHead {
|
||||||
|
/* Fallback/Original definition if needed, but overridden above */
|
||||||
|
position: absolute;
|
||||||
|
width: 84%;
|
||||||
|
height: 1px;
|
||||||
|
margin-top: 16%;
|
||||||
|
margin-left: 8%;
|
||||||
|
background-image: url('../img/kuang_tou.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
position: absolute;
|
||||||
|
color: #0dede4;
|
||||||
|
font-weight: bold;
|
||||||
|
bottom: 5px;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name1 {
|
||||||
|
position: absolute;
|
||||||
|
width: 35px;
|
||||||
|
height: 15px;
|
||||||
|
bottom: 10px;
|
||||||
|
right: 2px;
|
||||||
|
background-image: url('../img/kuang_you.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.part-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 80%;
|
||||||
|
position: absolute;
|
||||||
|
top: 15%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-list-container {
|
||||||
|
position: absolute;
|
||||||
|
top: 30%; /* Moved down to prevent overlap with title */
|
||||||
|
width: 96%;
|
||||||
|
left: 2%;
|
||||||
|
height: 65%; /* Adjusted height */
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-content-scroll {
|
||||||
|
height: calc(100% - 40px);
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-items {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-item {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
border-bottom: 1px solid #00ffff57;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-item p {
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
width: 25%;
|
||||||
|
text-align: center;
|
||||||
|
word-break: break-all;
|
||||||
|
height: 35px;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reuse existing list styles for alarm */
|
||||||
|
.kuang {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kuang>li {
|
||||||
|
color: #fff;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
border-bottom: 1px solid #00ffff57;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.kuang>li>p {
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
width: 25%; /* 4 columns for alarm list */
|
||||||
|
text-align: center;
|
||||||
|
word-break: break-all;
|
||||||
|
height: 35px;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
.kuang>li:first-child {
|
||||||
|
color: #ffb742;
|
||||||
|
text-align: center;
|
||||||
|
height: 40px;
|
||||||
|
background: #013132;
|
||||||
|
/* font-weight: bold; */
|
||||||
|
font-size: 30px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lane list styles */
|
||||||
|
.lane-list {
|
||||||
|
width: 90%;
|
||||||
|
margin-left: 5%;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
border-bottom: 1px solid #00ffff57;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-item p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 0;
|
||||||
|
width: 25%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-item.header {
|
||||||
|
background: #013132;
|
||||||
|
color: #ffb742;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
BIN
img/bj.png
Normal file
|
After Width: | Height: | Size: 587 KiB |
BIN
img/kuang.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
img/kuang_tou.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
img/kuang_you.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
img/quan.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
img/tou.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
94
index.html
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="css/index.css">
|
||||||
|
<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script>
|
||||||
|
<!-- <script type="text/javascript" src="js/echarts.min.js"></script> -->
|
||||||
|
<script type="text/javascript" src="js/echarts.min.old.js"></script>
|
||||||
|
<title>大屏监控</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="header-container">
|
||||||
|
<div class="tou">
|
||||||
|
<div class="zi">数 据 可 视 化 看 板</div>
|
||||||
|
<img src="img/tou.png">
|
||||||
|
</div>
|
||||||
|
<div class="datetime-box">
|
||||||
|
<div class="shijian"></div>
|
||||||
|
<div class="riqi"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="lanes-container">
|
||||||
|
<!-- Lane 1 -->
|
||||||
|
<div class="lane-column">
|
||||||
|
<div class="lane-header">1巷道</div>
|
||||||
|
<div class="lane-part">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">任务监控</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="part-content" id="lane1"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Lane 2 -->
|
||||||
|
<div class="lane-column">
|
||||||
|
<div class="lane-header">2巷道</div>
|
||||||
|
<div class="lane-part">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">任务监控</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="part-content" id="lane2"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Lane 3 -->
|
||||||
|
<div class="lane-column">
|
||||||
|
<div class="lane-header">3巷道</div>
|
||||||
|
<div class="lane-part">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">任务监控</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="part-content" id="lane3"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Alarm Section -->
|
||||||
|
<div class="alarm-section">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">报警信息</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="alarm-list-container" id="alarm-list">
|
||||||
|
<ul class="kuang">
|
||||||
|
<li>
|
||||||
|
<p>任务号</p>
|
||||||
|
<p>时间</p>
|
||||||
|
<p>类型</p>
|
||||||
|
<p>详情</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="alarm-content-scroll">
|
||||||
|
<ul class="alarm-items">
|
||||||
|
<!-- Dynamic content will go here -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript" src="js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
45
js/echarts.min.js
vendored
Normal file
25224
js/echarts.min.old.js
Normal file
723
js/index.js
Normal file
@@ -0,0 +1,723 @@
|
|||||||
|
var ip="http://172.19.50.70:10012"
|
||||||
|
//仓库 01 三联 02 二联
|
||||||
|
var warehouseId="01"
|
||||||
|
//入出库端 1 入库 2 出库
|
||||||
|
var type="1"
|
||||||
|
function getData() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip+"/api/stock/all",
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
shuzi(res.data)
|
||||||
|
liebiao(res.data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function getData2() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip+"/api/stock/cargoSpace/pie",
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
pieCharts(res.data.pie)
|
||||||
|
$("#total").html(res.data.totalCargoSpace)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: ip+"/api/stock/inout/stat",
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
tiaoxintu(res.data.drrk,res.data.drck)
|
||||||
|
zhuzhuangzhexiantu(res.data.statistic)
|
||||||
|
zhexiantu('bzrk', 'rgb(5, 243, 255)', 'rgb(3, 148, 153)', 'rgb(1, 77, 80)', res.data.bzrk)
|
||||||
|
zhexiantu('bzck','rgb(25, 255, 236)', 'rgb(16, 171, 158)', 'rgb(6, 62, 57)' , res.data.bzck)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function shuzi(res){
|
||||||
|
let totalQuantity=res.totalQuantity+""
|
||||||
|
let dom=''
|
||||||
|
for (let i = 0; i < totalQuantity.length; i++) {
|
||||||
|
dom+='<div class="shuzi1">'+totalQuantity[i]+'</div>'
|
||||||
|
}
|
||||||
|
dom+='<div class="shuzi1" style="color: #ffb742;font-size: 32px;line-height: 60px;">件</div>'
|
||||||
|
$("#shuzi").html(dom)
|
||||||
|
}
|
||||||
|
// 饼图
|
||||||
|
function pieCharts(data) {
|
||||||
|
var chartDom = document.getElementById('middleDiv');
|
||||||
|
var myChart = echarts.init(chartDom);
|
||||||
|
var option;
|
||||||
|
|
||||||
|
option = {
|
||||||
|
color: myColor1,
|
||||||
|
legend: {
|
||||||
|
bottom: 60,
|
||||||
|
itemWidth: 30,
|
||||||
|
itemHeight: 20,
|
||||||
|
// itemGap:100,
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 20,
|
||||||
|
color: '#fff',
|
||||||
|
padding: [0, 10]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
series: [{
|
||||||
|
name: 'Nightingale Chart',
|
||||||
|
type: 'pie',
|
||||||
|
radius: [160, 260],
|
||||||
|
center: ['50%', '43%'],
|
||||||
|
// roseType: 'area',
|
||||||
|
itemStyle: {
|
||||||
|
borderRadius: 8
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 24,
|
||||||
|
color: "#fff",
|
||||||
|
},
|
||||||
|
formatter: '{b}{c}\n{d}%'
|
||||||
|
},
|
||||||
|
data: data
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条形图
|
||||||
|
function tiaoxintu(a,b) {
|
||||||
|
var chartDom1 = document.getElementById('drcrk');
|
||||||
|
var myChart = echarts.init(chartDom1);
|
||||||
|
var option;
|
||||||
|
|
||||||
|
const builderJson = {
|
||||||
|
all: Number(a)+Number(b),
|
||||||
|
charts: {
|
||||||
|
出库量: b,
|
||||||
|
入库量: a,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var myColor = ["#19ffec", "#19ffec"]
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
option = {
|
||||||
|
backgroundColor: {
|
||||||
|
type: 'pattern',
|
||||||
|
image: canvas,
|
||||||
|
repeat: 'repeat'
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
title: [{
|
||||||
|
subtext: '总计 ' + builderJson.all + ' 件',
|
||||||
|
left: 'center',
|
||||||
|
subtextStyle: {
|
||||||
|
color: '#ffb742',
|
||||||
|
fontSize: 20
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
grid: [{
|
||||||
|
top: 40,
|
||||||
|
left: 80,
|
||||||
|
bottom: 110
|
||||||
|
}],
|
||||||
|
xAxis: [{
|
||||||
|
type: 'value',
|
||||||
|
max: builderJson.all,
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00fff9',
|
||||||
|
fontSize: 20
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
yAxis: [{
|
||||||
|
type: 'category',
|
||||||
|
data: Object.keys(builderJson.charts),
|
||||||
|
axisLabel: {
|
||||||
|
interval: 0,
|
||||||
|
color: '#00fff9',
|
||||||
|
fontSize: 20,
|
||||||
|
rotate: 30
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
series: [{
|
||||||
|
type: 'bar',
|
||||||
|
stack: 'chart',
|
||||||
|
z: 3,
|
||||||
|
label: {
|
||||||
|
color: '#fff',
|
||||||
|
position: 'right',
|
||||||
|
show: true,
|
||||||
|
fontSize: 20
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
barBorderRadius: 5,
|
||||||
|
// 修改每个柱子的颜色
|
||||||
|
color: function(params) {
|
||||||
|
var num = myColor.length;
|
||||||
|
return myColor[params.dataIndex % num]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// 修改柱子的距离
|
||||||
|
barCategoryGap: 0,
|
||||||
|
// 柱子的宽度
|
||||||
|
barWidth: 10,
|
||||||
|
data: Object.keys(builderJson.charts).map(function(key) {
|
||||||
|
return builderJson.charts[key];
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'bar',
|
||||||
|
stack: 'chart',
|
||||||
|
silent: true,
|
||||||
|
itemStyle: {
|
||||||
|
barBorderRadius: 2,
|
||||||
|
color: '#0b4a54'
|
||||||
|
},
|
||||||
|
data: Object.keys(builderJson.charts).map(function(key) {
|
||||||
|
return builderJson.all - builderJson.charts[key];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 柱状图折现图
|
||||||
|
function zhuzhuangzhexiantu(data) {
|
||||||
|
var chartDom = document.getElementById('dycrk');
|
||||||
|
var myChart = echarts.init(chartDom);
|
||||||
|
var option;
|
||||||
|
var labelOption
|
||||||
|
labelOption = {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
verticalAlign: 'middle',
|
||||||
|
fontSize: 15,
|
||||||
|
color: "#ffffff"
|
||||||
|
};
|
||||||
|
option = {
|
||||||
|
legend: {
|
||||||
|
left: "65%",
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 15,
|
||||||
|
color: "#19ffec"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
dataset: {
|
||||||
|
dimensions: ['mouth', '入库', '出库'],
|
||||||
|
source: data
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
top: "20%",
|
||||||
|
left: '5%',
|
||||||
|
right: '5%',
|
||||||
|
bottom: '5%',
|
||||||
|
show: false, //显示边框
|
||||||
|
borderColor: "#012f4a", //边框颜色
|
||||||
|
containLabel: true //包含刻度文字在内
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: "rgba(25,255,255,.3)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
type: "bar",
|
||||||
|
showBackground: false,
|
||||||
|
barWidth: '50%',
|
||||||
|
label: labelOption,
|
||||||
|
itemStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||||
|
offset: 0,
|
||||||
|
color: '#19ffec'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 0.6,
|
||||||
|
color: '#07554e'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: '#04252b'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
type: "line",
|
||||||
|
showBackground: true,
|
||||||
|
label: labelOption,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#ffb742'
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 折线图
|
||||||
|
function zhexiantu(a, b, c, d, e) {
|
||||||
|
var chartDom = document.getElementById(a);
|
||||||
|
var myChart = echarts.init(chartDom);
|
||||||
|
var option;
|
||||||
|
var labelOption = {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
verticalAlign: 'middle',
|
||||||
|
fontSize: 15,
|
||||||
|
color: "#ffb742"
|
||||||
|
};
|
||||||
|
option = {
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false, //坐标轴两边不留白
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
// 设置背景横线
|
||||||
|
color: "#097176",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '5%',
|
||||||
|
top: '10%',
|
||||||
|
// right: '4%',
|
||||||
|
bottom: '5%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: e,
|
||||||
|
type: 'line',
|
||||||
|
smooth: 0.2,
|
||||||
|
itemStyle: {
|
||||||
|
color: b
|
||||||
|
},
|
||||||
|
label: labelOption,
|
||||||
|
areaStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||||
|
offset: 0,
|
||||||
|
color: c
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: d
|
||||||
|
}
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var biaoshi = 0
|
||||||
|
|
||||||
|
function info() {
|
||||||
|
var tr = $("#aa ul>li:eq(1)").clone();
|
||||||
|
var height = $("#kcxx").innerHeight();
|
||||||
|
var allheight = $("#box").innerHeight()
|
||||||
|
if (height > allheight) {
|
||||||
|
$("#aa ul>li:eq(1)").animate({
|
||||||
|
marginTop: "-1.8rem"
|
||||||
|
}, 500, function() {
|
||||||
|
$("#aa ul>li:eq(1)").remove();
|
||||||
|
})
|
||||||
|
biaoshi = 1
|
||||||
|
} else {
|
||||||
|
biaoshi = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function liebiao(res) {
|
||||||
|
let data = res.stockMsg
|
||||||
|
let dom = "";
|
||||||
|
if (biaoshi == 2) {
|
||||||
|
$(".tt").remove()
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
if (i % 2 == 0) {
|
||||||
|
dom += "<li class='tt' style='background: #046566'><p>" + data[i].productId +
|
||||||
|
"</p><p>" + data[i].productName +
|
||||||
|
"</p><p>" + data[i].lotNo +
|
||||||
|
"</p><p>" + data[i].quantity + "</p></li>"
|
||||||
|
} else {
|
||||||
|
dom += "<li class='tt' style='background: #05383c'><p>" + data[i].productId +
|
||||||
|
"</p><p>" + data[i].productName +
|
||||||
|
"</p><p>" + data[i].lotNo +
|
||||||
|
"</p><p>" + data[i].quantity + "</p></li>"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
$("#kcxx").append(dom)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 时间
|
||||||
|
var t = null;
|
||||||
|
$(document).ready(function() {
|
||||||
|
time()
|
||||||
|
// getData()
|
||||||
|
// window.setInterval("getData()", 10000);
|
||||||
|
// getData2()
|
||||||
|
// window.setInterval("getData2()", 3000);
|
||||||
|
// info()
|
||||||
|
// window.setInterval("info()", 3000);
|
||||||
|
|
||||||
|
// mockAlarmData();
|
||||||
|
getAlarmData();
|
||||||
|
window.setInterval(getAlarmData, 1500);
|
||||||
|
|
||||||
|
getLaneData();
|
||||||
|
window.setInterval(getLaneData, 1500);
|
||||||
|
|
||||||
|
window.setInterval(scrollAlarmList, 1000);
|
||||||
|
})
|
||||||
|
|
||||||
|
function getAlarmData() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip + "/api/screen/selectFaultRecord?warehouseId="+warehouseId+"&type="+type,
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
if (res.code === 200) {
|
||||||
|
renderAlarmData(res.data);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(err) {
|
||||||
|
console.log("Error fetching alarm data", err);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderAlarmData(data) {
|
||||||
|
var dom = "";
|
||||||
|
// Ensure we have data
|
||||||
|
if (!data || data.length === 0) {
|
||||||
|
$(".alarm-items").html("");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
var item = data[i];
|
||||||
|
var bg = i % 2 == 0 ? "#046566" : "#05383c";
|
||||||
|
|
||||||
|
// Map fields
|
||||||
|
// Time: Extract HH:mm:ss from startTime "yyyy-MM-dd HH:mm:ss"
|
||||||
|
var timeStr = item.startTime ? item.startTime.split(' ')[1] : "";
|
||||||
|
|
||||||
|
// Type: Default to "故障"
|
||||||
|
var type = "故障";
|
||||||
|
var color = "#ff4d4d"; // Red for fault
|
||||||
|
|
||||||
|
// Detail: deviceName + fault description
|
||||||
|
var faultDesc = item.fault;
|
||||||
|
/*if (item.deviceType === "ddj") {
|
||||||
|
faultDesc = faultDesc;
|
||||||
|
} else if (item.deviceType === "ssj") {
|
||||||
|
faultDesc = faultDesc;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
var detail = (item.deviceName || "") + " " + (faultDesc || "");
|
||||||
|
|
||||||
|
// Task No
|
||||||
|
var taskNo = item.taskNo || "";
|
||||||
|
|
||||||
|
dom += "<li class='alarm-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + taskNo + "</p>" +
|
||||||
|
"<p>" + timeStr + "</p>" +
|
||||||
|
"<p style='color:" + color + "'>" + type + "</p>" +
|
||||||
|
"<p>" + detail + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
$(".alarm-items").html(dom);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLaneData() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip + "/api/screen/selectJobListByWarehouseIdAndType?warehouseId="+warehouseId+"&type="+type,
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
if (res.code === 200) {
|
||||||
|
renderLaneData(res.data);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(err) {
|
||||||
|
console.log("Error fetching lane data", err);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderLaneData(data) {
|
||||||
|
var laneIds = ['1', '2', '3']; // Keys in the data object
|
||||||
|
|
||||||
|
laneIds.forEach(function(key) {
|
||||||
|
var list = data[key] || [];
|
||||||
|
var content = "";
|
||||||
|
content += "<ul class='lane-list'>";
|
||||||
|
|
||||||
|
// Header
|
||||||
|
content += "<li class='lane-item header'>" +
|
||||||
|
"<p>任务号</p>" +
|
||||||
|
"<p>托盘码</p>" +
|
||||||
|
"<p>类型</p>" +
|
||||||
|
"<p>状态</p>" +
|
||||||
|
"</li>";
|
||||||
|
|
||||||
|
for (var i = 0; i < list.length; i++) {
|
||||||
|
var item = list[i];
|
||||||
|
var taskId = item.taskNo;
|
||||||
|
var palletId = item.trayCode || "";
|
||||||
|
var typeName = getTaskTypeName(item.inOrOut);
|
||||||
|
var statusName = getTaskStatusName(item.status);
|
||||||
|
|
||||||
|
var statusColor = (statusName === "执行中" || statusName === "完成") ? "#00ffc0" : "#ffb742";
|
||||||
|
var typeColor = (typeName.indexOf("入") > -1) ? "#0dede4" : "#ff7e00";
|
||||||
|
var bg = i % 2 == 0 ? "rgba(4, 101, 102, 0.5)" : "rgba(5, 56, 60, 0.5)";
|
||||||
|
|
||||||
|
content += "<li class='lane-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + taskId + "</p>" +
|
||||||
|
"<p>" + palletId + "</p>" +
|
||||||
|
"<p style='color:" + typeColor + "'>" + typeName + "</p>" +
|
||||||
|
"<p style='color:" + statusColor + "'>" + statusName + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
content += "</ul>";
|
||||||
|
$("#lane" + key).html(content);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTaskTypeName(code) {
|
||||||
|
// 空值/假值直接返回空字符串(保留原逻辑)
|
||||||
|
if (!code) return "";
|
||||||
|
// 将编码转为数字(兼容字符串/数字类型入参),判断大小后返回对应名称
|
||||||
|
const numCode = Number(code);
|
||||||
|
return numCode > 20 ? "出库" : "入库";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTaskStatusName(code) {
|
||||||
|
if (!code) return "";
|
||||||
|
if (code === "4") return "完成";
|
||||||
|
if (code === "0") return "创建";
|
||||||
|
if (code === "1" || code == "2" || code == "3") return "执行中";
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDdjFaultDescription(value) {
|
||||||
|
if (value === "0") return "待机";
|
||||||
|
if (value === "1") return "工作";
|
||||||
|
if (value === "1031") return "急停";
|
||||||
|
if (value === "1032") return "货叉不在中位";
|
||||||
|
if (value === '1033') return "行走变频报警";
|
||||||
|
if (value === "1034") return "升降变频报警";
|
||||||
|
if (value === "1035") return "货叉变频报警";
|
||||||
|
if (value === "1036") return "货叉变频报警";
|
||||||
|
if (value === "1037") return "运行限位故障";
|
||||||
|
if (value === "1038") return "升降限位故障";
|
||||||
|
if (value === "1039") return "运行不能纠偏";
|
||||||
|
if (value === "1040") return "升降不能纠偏";
|
||||||
|
if (value === "1041") return "水平测距出错";
|
||||||
|
if (value === "1042") return "垂直BPS出错";
|
||||||
|
if (value === "1043") return "超速保护";
|
||||||
|
if (value === "1044") return "前边超宽";
|
||||||
|
if (value === "1045") return "后边超宽";
|
||||||
|
if (value === "1046") return "左边歪斜";
|
||||||
|
if (value === "1047") return "右边歪斜";
|
||||||
|
if (value === "1048") return "超高1";
|
||||||
|
if (value === "1049") return "超高2";
|
||||||
|
if (value === "1050") return "放货完毕货叉有货";
|
||||||
|
if (value === "1051") return "取货时货叉有货";
|
||||||
|
if (value === "1052") return "放货目标有货";
|
||||||
|
if (value === "1053") return "取货完毕无货";
|
||||||
|
if (value === "1054") return "放货时货叉无货";
|
||||||
|
if (value === "1055") return "货叉动作超时";
|
||||||
|
if (value === "1056") return "货叉不能纠偏";
|
||||||
|
if (value === "1057") return "微升降超时";
|
||||||
|
if (value === "1058") return "松绳过载";
|
||||||
|
if (value === "1059") return "设定超限";
|
||||||
|
if (value === "1060") return "取双伸时单伸有货";
|
||||||
|
if (value === "1061") return "放双伸时单伸有货";
|
||||||
|
if (value === "1062") return "入库输送机任务不符";
|
||||||
|
if (value === "1063") return "安全门打开";
|
||||||
|
if (value === "9999") return "设备未联机";
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSsjFaultDescription(value) {
|
||||||
|
if (value == 101) return "前超长";
|
||||||
|
if (value == 102) return "后超长";
|
||||||
|
if (value == 103) return "左超宽";
|
||||||
|
if (value == 104) return "右超宽";
|
||||||
|
if (value == 105) return "超高";
|
||||||
|
if (value == 106) return "称重异常";
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function time() {
|
||||||
|
clearTimeout(t);
|
||||||
|
dt = new Date();
|
||||||
|
var y = dt.getFullYear();
|
||||||
|
var mt = dt.getMonth() + 1;
|
||||||
|
var day = dt.getDate();
|
||||||
|
var h = dt.getHours();
|
||||||
|
var m = dt.getMinutes();
|
||||||
|
var s = dt.getSeconds();
|
||||||
|
var a = new Date().getDay();
|
||||||
|
var b = "";
|
||||||
|
switch (a) {
|
||||||
|
case 0:
|
||||||
|
b = "日";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
b = "一";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
b = "二";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
b = "三";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
b = "四";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
b = "五";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
b = "六";
|
||||||
|
}
|
||||||
|
document.querySelector(".riqi").innerHTML = "星期" + b + "<br>" + y + "年" + mt + "月" + day + "日";
|
||||||
|
document.querySelector(".shijian").innerHTML = jialing(h) + ":" + jialing(m);
|
||||||
|
t = setTimeout(time, 1000);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function jialing(m) {
|
||||||
|
if (m < 10) {
|
||||||
|
m = "0" + m
|
||||||
|
return m;
|
||||||
|
} else {
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function mockAlarmData() {
|
||||||
|
var alarms = [
|
||||||
|
{ time: "10:00:01", type: "故障", detail: "1号堆垛机通信中断", status: "未处理" },
|
||||||
|
{ time: "10:05:23", type: "警告", detail: "2号入库口货物堆积", status: "处理中" },
|
||||||
|
{ time: "10:15:11", type: "故障", detail: "3号出库口光电异常", status: "未处理" },
|
||||||
|
{ time: "10:20:45", type: "提示", detail: "系统自动备份完成", status: "已完成" },
|
||||||
|
{ time: "10:30:00", type: "警告", detail: "库位占用率过高", status: "处理中" },
|
||||||
|
{ time: "10:35:12", type: "故障", detail: "1号巷道急停按下", status: "未处理" },
|
||||||
|
{ time: "10:40:00", type: "提示", detail: "入库任务下发成功", status: "已完成" },
|
||||||
|
{ time: "10:45:30", type: "警告", detail: "网络延迟较高", status: "处理中" }
|
||||||
|
];
|
||||||
|
|
||||||
|
var dom = "";
|
||||||
|
for (var i = 0; i < alarms.length; i++) {
|
||||||
|
var bg = i % 2 == 0 ? "#046566" : "#05383c";
|
||||||
|
var color = alarms[i].type === "故障" ? "#ff4d4d" : (alarms[i].type === "警告" ? "#ffb742" : "#fff");
|
||||||
|
|
||||||
|
dom += "<li class='alarm-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + alarms[i].time + "</p>" +
|
||||||
|
"<p style='color:" + color + "'>" + alarms[i].type + "</p>" +
|
||||||
|
"<p>" + alarms[i].detail + "</p>" +
|
||||||
|
"<p>" + alarms[i].status + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
$(".alarm-items").html(dom);
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrollAlarmList() {
|
||||||
|
var list = $(".alarm-items");
|
||||||
|
var firstItem = list.find("li:first");
|
||||||
|
if (firstItem.length === 0) return;
|
||||||
|
|
||||||
|
var height = firstItem.height();
|
||||||
|
// Default to some height if 0 (e.g. if hidden)
|
||||||
|
if (height === 0) height = 30;
|
||||||
|
|
||||||
|
if (list.children().length > 3) {
|
||||||
|
firstItem.animate({
|
||||||
|
marginTop: -height + "px"
|
||||||
|
}, 500, function() {
|
||||||
|
firstItem.css("marginTop", 0).appendTo(list);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function mockLaneData() {
|
||||||
|
// Generate mock data for 3 lanes (merged inbound/outbound)
|
||||||
|
var laneIds = ['lane1', 'lane2', 'lane3'];
|
||||||
|
|
||||||
|
laneIds.forEach(function(id) {
|
||||||
|
var content = "";
|
||||||
|
// Create a list structure
|
||||||
|
content += "<ul class='lane-list'>";
|
||||||
|
|
||||||
|
// Header
|
||||||
|
content += "<li class='lane-item header'>" +
|
||||||
|
"<p>任务号</p>" +
|
||||||
|
"<p>托盘码</p>" +
|
||||||
|
"<p>类型</p>" +
|
||||||
|
"<p>状态</p>" +
|
||||||
|
"</li>";
|
||||||
|
|
||||||
|
// Randomly generate 4-8 rows of data
|
||||||
|
var rowCount = Math.floor(Math.random() * 5) + 4;
|
||||||
|
for (var i = 0; i < rowCount; i++) {
|
||||||
|
var taskId = "T" + Math.floor(Math.random() * 10000);
|
||||||
|
var palletId = "P" + Math.floor(Math.random() * 1000);
|
||||||
|
var type = Math.random() > 0.5 ? "入库" : "出库";
|
||||||
|
var status = Math.random() > 0.5 ? "执行中" : "等待中";
|
||||||
|
var statusColor = status === "执行中" ? "#00ffc0" : "#ffb742";
|
||||||
|
var typeColor = type === "入库" ? "#0dede4" : "#ff7e00";
|
||||||
|
var bg = i % 2 == 0 ? "rgba(4, 101, 102, 0.5)" : "rgba(5, 56, 60, 0.5)";
|
||||||
|
|
||||||
|
content += "<li class='lane-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + taskId + "</p>" +
|
||||||
|
"<p>" + palletId + "</p>" +
|
||||||
|
"<p style='color:" + typeColor + "'>" + type + "</p>" +
|
||||||
|
"<p style='color:" + statusColor + "'>" + status + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
|
||||||
|
content += "</ul>";
|
||||||
|
$("#" + id).html(content);
|
||||||
|
});
|
||||||
|
}
|
||||||
4
js/jquery-3.1.1.min.js
vendored
Normal file
180
json/pie.json
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
{
|
||||||
|
"kczl":"888716",
|
||||||
|
"zhw":"6542",
|
||||||
|
"rkl":"5",
|
||||||
|
"ckl":"8",
|
||||||
|
"pie": [{
|
||||||
|
"value": 20,
|
||||||
|
"name": "空货位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 18,
|
||||||
|
"name": "满货位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 10,
|
||||||
|
"name": "入库已分配"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 8,
|
||||||
|
"name": "出库已分配"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 12,
|
||||||
|
"name": "入库需盘点"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 5,
|
||||||
|
"name": "出库需盘点"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"statistic": [{
|
||||||
|
"mouth": "1",
|
||||||
|
"入库": 1,
|
||||||
|
"出库": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "2",
|
||||||
|
"入库": 3,
|
||||||
|
"出库": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "3",
|
||||||
|
"入库": 4,
|
||||||
|
"出库": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "4",
|
||||||
|
"入库": 6,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "5",
|
||||||
|
"入库": 1,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "6",
|
||||||
|
"入库": 6,
|
||||||
|
"出库": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "7",
|
||||||
|
"入库": 3,
|
||||||
|
"出库": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "8",
|
||||||
|
"入库": 6,
|
||||||
|
"出库": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "9",
|
||||||
|
"入库": 7,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "10",
|
||||||
|
"入库": 5,
|
||||||
|
"出库": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "11",
|
||||||
|
"入库": 5,
|
||||||
|
"出库": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "12",
|
||||||
|
"入库": 3,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "13",
|
||||||
|
"入库": 5,
|
||||||
|
"出库": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "14",
|
||||||
|
"入库": 7,
|
||||||
|
"出库": 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "15",
|
||||||
|
"入库": 4,
|
||||||
|
"出库": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bzrk": [5, 8, 4, 5, 6, 9, 5],
|
||||||
|
"bzck": [6, 4, 9, 5, 4, 7, 4],
|
||||||
|
"taskDetail": [{
|
||||||
|
"jobId": "RY202205090001",
|
||||||
|
"taskNo": "10196",
|
||||||
|
"trayCode": "987789",
|
||||||
|
"cargoSpaceId": "010100102",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090002",
|
||||||
|
"taskNo": "10197",
|
||||||
|
"trayCode": "111111",
|
||||||
|
"cargoSpaceId": "010100103",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090003",
|
||||||
|
"taskNo": "10198",
|
||||||
|
"trayCode": "222222",
|
||||||
|
"cargoSpaceId": "010100104",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090004",
|
||||||
|
"taskNo": "10199",
|
||||||
|
"trayCode": "333333",
|
||||||
|
"cargoSpaceId": "010100201",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090002",
|
||||||
|
"taskNo": "10197",
|
||||||
|
"trayCode": "111111",
|
||||||
|
"cargoSpaceId": "010100103",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090003",
|
||||||
|
"taskNo": "10198",
|
||||||
|
"trayCode": "222222",
|
||||||
|
"cargoSpaceId": "010100104",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090004",
|
||||||
|
"taskNo": "10199",
|
||||||
|
"trayCode": "333333",
|
||||||
|
"cargoSpaceId": "010100201",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090002",
|
||||||
|
"taskNo": "10197",
|
||||||
|
"trayCode": "111111",
|
||||||
|
"cargoSpaceId": "010100103",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090003",
|
||||||
|
"taskNo": "10198",
|
||||||
|
"trayCode": "222222",
|
||||||
|
"cargoSpaceId": "010100104",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090004",
|
||||||
|
"taskNo": "10199",
|
||||||
|
"trayCode": "333333",
|
||||||
|
"cargoSpaceId": "010100201",
|
||||||
|
"type": "出库"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
208
manifest.json
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
{
|
||||||
|
"@platforms" : [ "android", "iPhone", "iPad" ],
|
||||||
|
"id" : "H5030C5DA", /*应用的标识*/
|
||||||
|
"name" : "FT541dp", /*应用名称,程序桌面图标名称*/
|
||||||
|
"version" : {
|
||||||
|
"name" : "1.0", /*应用版本名称*/
|
||||||
|
"code" : "100"
|
||||||
|
},
|
||||||
|
"description" : "", /*应用描述信息*/
|
||||||
|
"icons" : {
|
||||||
|
"72" : "icon.png"
|
||||||
|
},
|
||||||
|
"launch_path" : "index.html", /*应用的入口页面,默认为根目录下的index.html;支持网络地址,必须以http://或https://开头*/
|
||||||
|
"developer" : {
|
||||||
|
"name" : "", /*开发者名称*/
|
||||||
|
"email" : "", /*开发者邮箱地址*/
|
||||||
|
"url" : "" /*开发者个人主页地址*/
|
||||||
|
},
|
||||||
|
"permissions" : {
|
||||||
|
"Accelerometer" : {
|
||||||
|
"description" : "访问加速度感应器"
|
||||||
|
},
|
||||||
|
"Audio" : {
|
||||||
|
"description" : "访问麦克风"
|
||||||
|
},
|
||||||
|
"Cache" : {
|
||||||
|
"description" : "管理应用缓存"
|
||||||
|
},
|
||||||
|
"Console" : {
|
||||||
|
"description" : "跟踪调试输出日志"
|
||||||
|
},
|
||||||
|
"Device" : {
|
||||||
|
"description" : "访问设备信息"
|
||||||
|
},
|
||||||
|
"Downloader" : {
|
||||||
|
"description" : "文件下载管理"
|
||||||
|
},
|
||||||
|
"Events" : {
|
||||||
|
"description" : "应用扩展事件"
|
||||||
|
},
|
||||||
|
"File" : {
|
||||||
|
"description" : "访问本地文件系统"
|
||||||
|
},
|
||||||
|
"Gallery" : {
|
||||||
|
"description" : "访问系统相册"
|
||||||
|
},
|
||||||
|
"Invocation" : {
|
||||||
|
"description" : "使用Native.js能力"
|
||||||
|
},
|
||||||
|
"Orientation" : {
|
||||||
|
"description" : "访问方向感应器"
|
||||||
|
},
|
||||||
|
"Proximity" : {
|
||||||
|
"description" : "访问距离感应器"
|
||||||
|
},
|
||||||
|
"Storage" : {
|
||||||
|
"description" : "管理应用本地数据"
|
||||||
|
},
|
||||||
|
"Uploader" : {
|
||||||
|
"description" : "管理文件上传任务"
|
||||||
|
},
|
||||||
|
"Runtime" : {
|
||||||
|
"description" : "访问运行期环境"
|
||||||
|
},
|
||||||
|
"XMLHttpRequest" : {
|
||||||
|
"description" : "跨域网络访问"
|
||||||
|
},
|
||||||
|
"Zip" : {
|
||||||
|
"description" : "文件压缩与解压缩"
|
||||||
|
},
|
||||||
|
"Speech" : {
|
||||||
|
"description" : "管理语音识别插件"
|
||||||
|
},
|
||||||
|
"Webview" : {
|
||||||
|
"description" : "窗口管理"
|
||||||
|
},
|
||||||
|
"NativeUI" : {
|
||||||
|
"description" : "原生UI控件"
|
||||||
|
},
|
||||||
|
"Navigator" : {
|
||||||
|
"description" : "浏览器信息"
|
||||||
|
},
|
||||||
|
"NativeObj" : {
|
||||||
|
"description" : "原生对象"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"plus" : {
|
||||||
|
"splashscreen" : {
|
||||||
|
"autoclose" : true, /*是否自动关闭程序启动界面,true表示应用加载应用入口页面后自动关闭;false则需调plus.navigator.closeSplashscreen()关闭*/
|
||||||
|
"waiting" : true /*是否在程序启动界面显示等待雪花,true表示显示,false表示不显示。*/
|
||||||
|
},
|
||||||
|
"popGesture" : "close", /*设置应用默认侧滑返回关闭Webview窗口,"none"为无侧滑返回功能,"hide"为侧滑隐藏Webview窗口。参考http://ask.dcloud.net.cn/article/102*/
|
||||||
|
"runmode" : "normal", /*应用的首次启动运行模式,可取liberate或normal,liberate模式在第一次启动时将解压应用资源(Android平台File API才可正常访问_www目录)*/
|
||||||
|
"signature" : "Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==", /*可选,保留给应用签名,暂不使用*/
|
||||||
|
"distribute" : {
|
||||||
|
"apple" : {
|
||||||
|
"appid" : "", /*iOS应用标识,苹果开发网站申请的appid,如io.dcloud.HelloH5*/
|
||||||
|
"mobileprovision" : "", /*iOS应用打包配置文件*/
|
||||||
|
"password" : "", /*iOS应用打包个人证书导入密码*/
|
||||||
|
"p12" : "", /*iOS应用打包个人证书,打包配置文件关联的个人证书*/
|
||||||
|
"devices" : "universal", /*iOS应用支持的设备类型,可取值iphone/ipad/universal*/
|
||||||
|
"frameworks" : [] /*调用Native.js调用原生Objective-c API需要引用的FrameWork,如需调用GameCenter,则添加"GameKit.framework"*/
|
||||||
|
},
|
||||||
|
"google" : {
|
||||||
|
"packagename" : "", /*Android应用包名,如io.dcloud.HelloH5*/
|
||||||
|
"keystore" : "", /*Android应用打包使用的密钥库文件*/
|
||||||
|
"password" : "", /*Android应用打包使用密钥库中证书的密码*/
|
||||||
|
"aliasname" : "", /*Android应用打包使用密钥库中证书的别名*/
|
||||||
|
"permissions" : [
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
|
||||||
|
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
|
||||||
|
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
/*使用Native.js调用原生安卓API需要使用到的系统权限*/
|
||||||
|
"orientation" : [ "portrait-primary" ], /*应用支持的方向,portrait-primary:竖屏正方向;portrait-secondary:竖屏反方向;landscape-primary:横屏正方向;landscape-secondary:横屏反方向*/
|
||||||
|
"icons" : {
|
||||||
|
"ios" : {
|
||||||
|
"prerendered" : true, /*应用图标是否已经高亮处理,在iOS6及以下设备上有效*/
|
||||||
|
"auto" : "", /*应用图标,分辨率:512x512,用于自动生成各种尺寸程序图标*/
|
||||||
|
"iphone" : {
|
||||||
|
"normal" : "", /*iPhone3/3GS程序图标,分辨率:57x57*/
|
||||||
|
"retina" : "", /*iPhone4程序图标,分辨率:114x114*/
|
||||||
|
"retina7" : "", /*iPhone4S/5/6程序图标,分辨率:120x120*/
|
||||||
|
"retina8" : "", /*iPhone6 Plus程序图标,分辨率:180x180*/
|
||||||
|
"spotlight-normal" : "", /*iPhone3/3GS Spotlight搜索程序图标,分辨率:29x29*/
|
||||||
|
"spotlight-retina" : "", /*iPhone4 Spotlight搜索程序图标,分辨率:58x58*/
|
||||||
|
"spotlight-retina7" : "", /*iPhone4S/5/6 Spotlight搜索程序图标,分辨率:80x80*/
|
||||||
|
"settings-normal" : "", /*iPhone4设置页面程序图标,分辨率:29x29*/
|
||||||
|
"settings-retina" : "", /*iPhone4S/5/6设置页面程序图标,分辨率:58x58*/
|
||||||
|
"settings-retina8" : "" /*iPhone6Plus设置页面程序图标,分辨率:87x87*/
|
||||||
|
},
|
||||||
|
"ipad" : {
|
||||||
|
"normal" : "", /*iPad普通屏幕程序图标,分辨率:72x72*/
|
||||||
|
"retina" : "", /*iPad高分屏程序图标,分辨率:144x144*/
|
||||||
|
"normal7" : "", /*iPad iOS7程序图标,分辨率:76x76*/
|
||||||
|
"retina7" : "", /*iPad iOS7高分屏程序图标,分辨率:152x152*/
|
||||||
|
"spotlight-normal" : "", /*iPad Spotlight搜索程序图标,分辨率:50x50*/
|
||||||
|
"spotlight-retina" : "", /*iPad高分屏Spotlight搜索程序图标,分辨率:100x100*/
|
||||||
|
"spotlight-normal7" : "", /*iPad iOS7 Spotlight搜索程序图标,分辨率:40x40*/
|
||||||
|
"spotlight-retina7" : "", /*iPad iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/
|
||||||
|
"settings-normal" : "", /*iPad设置页面程序图标,分辨率:29x29*/
|
||||||
|
"settings-retina" : "" /*iPad高分屏设置页面程序图标,分辨率:58x58*/
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"android" : {
|
||||||
|
"mdpi" : "", /*普通屏程序图标,分辨率:48x48*/
|
||||||
|
"ldpi" : "", /*大屏程序图标,分辨率:48x48*/
|
||||||
|
"hdpi" : "", /*高分屏程序图标,分辨率:72x72*/
|
||||||
|
"xhdpi" : "", /*720P高分屏程序图标,分辨率:96x96*/
|
||||||
|
"xxhdpi" : "" /*1080P 高分屏程序图标,分辨率:144x144*/
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"splashscreen" : {
|
||||||
|
"ios" : {
|
||||||
|
"iphone" : {
|
||||||
|
"default" : "", /*iPhone3启动图片选,分辨率:320x480*/
|
||||||
|
"retina35" : "", /*3.5英寸设备(iPhone4)启动图片,分辨率:640x960*/
|
||||||
|
"retina40" : "", /*4.0 英寸设备(iPhone5/iPhone5s)启动图片,分辨率:640x1136*/
|
||||||
|
"retina47" : "", /*4.7 英寸设备(iPhone6)启动图片,分辨率:750x1334*/
|
||||||
|
"retina55" : "", /*5.5 英寸设备(iPhone6 Plus)启动图片,分辨率:1242x2208*/
|
||||||
|
"retina55l" : "" /*5.5 英寸设备(iPhone6 Plus)横屏启动图片,分辨率:2208x1242*/
|
||||||
|
},
|
||||||
|
"ipad" : {
|
||||||
|
"portrait" : "", /*iPad竖屏启动图片,分辨率:768x1004*/
|
||||||
|
"portrait-retina" : "", /*iPad高分屏竖屏图片,分辨率:1536x2008*/
|
||||||
|
"landscape" : "", /*iPad横屏启动图片,分辨率:1024x748*/
|
||||||
|
"landscape-retina" : "", /*iPad高分屏横屏启动图片,分辨率:2048x1496*/
|
||||||
|
"portrait7" : "", /*iPad iOS7竖屏启动图片,分辨率:768x1024*/
|
||||||
|
"portrait-retina7" : "", /*iPad iOS7高分屏竖屏图片,分辨率:1536x2048*/
|
||||||
|
"landscape7" : "", /*iPad iOS7横屏启动图片,分辨率:1024x768*/
|
||||||
|
"landscape-retina7" : "" /*iPad iOS7高分屏横屏启动图片,分辨率:2048x1536*/
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"android" : {
|
||||||
|
"mdpi" : "", /*普通屏启动图片,分辨率:240x282*/
|
||||||
|
"ldpi" : "", /*大屏启动图片,分辨率:320x442*/
|
||||||
|
"hdpi" : "", /*高分屏启动图片,分辨率:480x762*/
|
||||||
|
"xhdpi" : "", /*720P高分屏启动图片,分辨率:720x1242*/
|
||||||
|
"xxhdpi" : "" /*1080P高分屏启动图片,分辨率:1080x1882*/
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"ios" : {
|
||||||
|
"dSYMs" : false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"screenOrientation" : [ "portrait-primary" ]
|
||||||
|
}
|
||||||
BIN
unpackage/cache/apk/H5030C5DA_cm.apk
vendored
Normal file
BIN
unpackage/cache/apk/H5FE4B11F_cm.apk
vendored
Normal file
1
unpackage/cache/apk/apkurl
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
https://app.liuyingyong.cn/build/download/f08bbf50-0170-11f1-abb5-2d31e3ed3876
|
||||||
1
unpackage/cache/apk/cmManifestCache.json
vendored
Normal file
4
unpackage/cache/certdata
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
andrCertfile=D:/Bonc/tools/HBuilderX/plugins/app-safe-pack/Test.keystore
|
||||||
|
andrCertAlias=android
|
||||||
|
andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==
|
||||||
|
storePassword=ep/Tdjka4Y7WYqDB6/S7dw==
|
||||||
4
unpackage/cache/cloudcertificate/certini
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
[General]
|
||||||
|
andrCertfile=package.keystore
|
||||||
|
andrCertAlias=H5030C5DA
|
||||||
|
andrCertPass="W29ipqz66AeiuWXdgp/Yfw=="
|
||||||
BIN
unpackage/cache/cloudcertificate/package.keystore
vendored
Normal file
293
unpackage/cache/wgt/H5030C5DA/css/index.css
vendored
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
position: absolute;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
transform: scale(0.8);
|
||||||
|
background-image: url('../img/bj.png');
|
||||||
|
background-size: 1920px 1080px;
|
||||||
|
/* 背景图片覆盖整个元素 */
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
/* 背景图片不重复 */
|
||||||
|
}
|
||||||
|
|
||||||
|
.riqi {
|
||||||
|
font-size: 20px;
|
||||||
|
color: rgb(255, 255, 255);
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.shijian {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 45px;
|
||||||
|
color: rgb(254, 254, 254);
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.datetime-box {
|
||||||
|
position: absolute;
|
||||||
|
top: 1%;
|
||||||
|
right: 1%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-end;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-container {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zi {
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 15px;
|
||||||
|
text-align: center;
|
||||||
|
position: absolute;
|
||||||
|
font-size: 55px;
|
||||||
|
font-weight: bold;
|
||||||
|
background: linear-gradient(0deg, #fff, #00fff9, #fff);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
text-fill-color: transparent;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.zi::before {
|
||||||
|
z-index: -1;
|
||||||
|
content: '数 据 可 视 化 看 板';
|
||||||
|
position: absolute;
|
||||||
|
text-shadow: 1px 1px 10px #00ddcf;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
top: 100px;
|
||||||
|
width: 96%;
|
||||||
|
left: 2%;
|
||||||
|
height: 88%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lanes-container {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 75%;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-column {
|
||||||
|
width: 32%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-header {
|
||||||
|
text-align: center;
|
||||||
|
color: #00fff9;
|
||||||
|
font-size: 30px;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
background: rgba(0, 255, 255, 0.1);
|
||||||
|
padding: 5px;
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-part {
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
background-image: url('../img/kuang.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-part .divHead {
|
||||||
|
position: absolute;
|
||||||
|
width: 84%;
|
||||||
|
height: 1px;
|
||||||
|
top: 6%; /* Changed from margin-top to top for height-relative positioning */
|
||||||
|
left: 8%;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
background-image: url('../img/kuang_tou.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-section {
|
||||||
|
height: 23%;
|
||||||
|
width: 100%;
|
||||||
|
background-image: url('../img/kuang.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
position: relative;
|
||||||
|
margin-top: 1%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-section .divHead {
|
||||||
|
position: absolute;
|
||||||
|
width: 20%;
|
||||||
|
height: 1px;
|
||||||
|
top: 10%; /* Changed from margin-top to top for height-relative positioning */
|
||||||
|
left: 1%;
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
background-image: url('../img/kuang_tou.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divHead {
|
||||||
|
/* Fallback/Original definition if needed, but overridden above */
|
||||||
|
position: absolute;
|
||||||
|
width: 84%;
|
||||||
|
height: 1px;
|
||||||
|
margin-top: 16%;
|
||||||
|
margin-left: 8%;
|
||||||
|
background-image: url('../img/kuang_tou.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name {
|
||||||
|
position: absolute;
|
||||||
|
color: #0dede4;
|
||||||
|
font-weight: bold;
|
||||||
|
bottom: 5px;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.name1 {
|
||||||
|
position: absolute;
|
||||||
|
width: 35px;
|
||||||
|
height: 15px;
|
||||||
|
bottom: 10px;
|
||||||
|
right: 2px;
|
||||||
|
background-image: url('../img/kuang_you.png');
|
||||||
|
background-size: 100% 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.part-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 80%;
|
||||||
|
position: absolute;
|
||||||
|
top: 15%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-list-container {
|
||||||
|
position: absolute;
|
||||||
|
top: 30%; /* Moved down to prevent overlap with title */
|
||||||
|
width: 96%;
|
||||||
|
left: 2%;
|
||||||
|
height: 65%; /* Adjusted height */
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-content-scroll {
|
||||||
|
height: calc(100% - 40px);
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-items {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-item {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
border-bottom: 1px solid #00ffff57;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alarm-item p {
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
width: 25%;
|
||||||
|
text-align: center;
|
||||||
|
word-break: break-all;
|
||||||
|
height: 35px;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reuse existing list styles for alarm */
|
||||||
|
.kuang {
|
||||||
|
width: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.kuang>li {
|
||||||
|
color: #fff;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
justify-content: space-around;
|
||||||
|
border-bottom: 1px solid #00ffff57;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.kuang>li>p {
|
||||||
|
margin: 0;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 2px;
|
||||||
|
width: 25%; /* 4 columns for alarm list */
|
||||||
|
text-align: center;
|
||||||
|
word-break: break-all;
|
||||||
|
height: 35px;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
.kuang>li:first-child {
|
||||||
|
color: #ffb742;
|
||||||
|
text-align: center;
|
||||||
|
height: 40px;
|
||||||
|
background: #013132;
|
||||||
|
/* font-weight: bold; */
|
||||||
|
font-size: 30px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lane list styles */
|
||||||
|
.lane-list {
|
||||||
|
width: 90%;
|
||||||
|
margin-left: 5%;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-around;
|
||||||
|
border-bottom: 1px solid #00ffff57;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-item p {
|
||||||
|
margin: 0;
|
||||||
|
padding: 5px 0;
|
||||||
|
width: 25%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lane-item.header {
|
||||||
|
background: #013132;
|
||||||
|
color: #ffb742;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 30px;
|
||||||
|
}
|
||||||
BIN
unpackage/cache/wgt/H5030C5DA/img/bj.png
vendored
Normal file
|
After Width: | Height: | Size: 587 KiB |
BIN
unpackage/cache/wgt/H5030C5DA/img/kuang.png
vendored
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
unpackage/cache/wgt/H5030C5DA/img/kuang_tou.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
unpackage/cache/wgt/H5030C5DA/img/kuang_you.png
vendored
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
unpackage/cache/wgt/H5030C5DA/img/quan.png
vendored
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
unpackage/cache/wgt/H5030C5DA/img/tou.png
vendored
Normal file
|
After Width: | Height: | Size: 41 KiB |
94
unpackage/cache/wgt/H5030C5DA/index.html
vendored
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<link rel="stylesheet" href="css/index.css">
|
||||||
|
<script type="text/javascript" src="js/jquery-3.1.1.min.js"></script>
|
||||||
|
<!-- <script type="text/javascript" src="js/echarts.min.js"></script> -->
|
||||||
|
<script type="text/javascript" src="js/echarts.min.old.js"></script>
|
||||||
|
<title>大屏监控</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="header-container">
|
||||||
|
<div class="tou">
|
||||||
|
<div class="zi">数 据 可 视 化 看 板</div>
|
||||||
|
<img src="img/tou.png">
|
||||||
|
</div>
|
||||||
|
<div class="datetime-box">
|
||||||
|
<div class="shijian"></div>
|
||||||
|
<div class="riqi"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content-wrapper">
|
||||||
|
<div class="lanes-container">
|
||||||
|
<!-- Lane 1 -->
|
||||||
|
<div class="lane-column">
|
||||||
|
<div class="lane-header">1巷道</div>
|
||||||
|
<div class="lane-part">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">任务监控</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="part-content" id="lane1"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Lane 2 -->
|
||||||
|
<div class="lane-column">
|
||||||
|
<div class="lane-header">2巷道</div>
|
||||||
|
<div class="lane-part">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">任务监控</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="part-content" id="lane2"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Lane 3 -->
|
||||||
|
<div class="lane-column">
|
||||||
|
<div class="lane-header">3巷道</div>
|
||||||
|
<div class="lane-part">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">任务监控</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="part-content" id="lane3"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Alarm Section -->
|
||||||
|
<div class="alarm-section">
|
||||||
|
<div class="divHead">
|
||||||
|
<div class="name">报警信息</div>
|
||||||
|
<div class="name1"></div>
|
||||||
|
</div>
|
||||||
|
<div class="alarm-list-container" id="alarm-list">
|
||||||
|
<ul class="kuang">
|
||||||
|
<li>
|
||||||
|
<p>任务号</p>
|
||||||
|
<p>时间</p>
|
||||||
|
<p>类型</p>
|
||||||
|
<p>详情</p>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="alarm-content-scroll">
|
||||||
|
<ul class="alarm-items">
|
||||||
|
<!-- Dynamic content will go here -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<script type="text/javascript" src="js/index.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
45
unpackage/cache/wgt/H5030C5DA/js/echarts.min.js
vendored
Normal file
25224
unpackage/cache/wgt/H5030C5DA/js/echarts.min.old.js
vendored
Normal file
723
unpackage/cache/wgt/H5030C5DA/js/index.js
vendored
Normal file
@@ -0,0 +1,723 @@
|
|||||||
|
var ip="http://172.19.50.70:10012"
|
||||||
|
//仓库 01 三联 02 二联
|
||||||
|
var warehouseId="01"
|
||||||
|
//入出库端 1 入库 2 出库
|
||||||
|
var type="1"
|
||||||
|
function getData() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip+"/api/stock/all",
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
shuzi(res.data)
|
||||||
|
liebiao(res.data)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function getData2() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip+"/api/stock/cargoSpace/pie",
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
pieCharts(res.data.pie)
|
||||||
|
$("#total").html(res.data.totalCargoSpace)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: ip+"/api/stock/inout/stat",
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
tiaoxintu(res.data.drrk,res.data.drck)
|
||||||
|
zhuzhuangzhexiantu(res.data.statistic)
|
||||||
|
zhexiantu('bzrk', 'rgb(5, 243, 255)', 'rgb(3, 148, 153)', 'rgb(1, 77, 80)', res.data.bzrk)
|
||||||
|
zhexiantu('bzck','rgb(25, 255, 236)', 'rgb(16, 171, 158)', 'rgb(6, 62, 57)' , res.data.bzck)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function shuzi(res){
|
||||||
|
let totalQuantity=res.totalQuantity+""
|
||||||
|
let dom=''
|
||||||
|
for (let i = 0; i < totalQuantity.length; i++) {
|
||||||
|
dom+='<div class="shuzi1">'+totalQuantity[i]+'</div>'
|
||||||
|
}
|
||||||
|
dom+='<div class="shuzi1" style="color: #ffb742;font-size: 32px;line-height: 60px;">件</div>'
|
||||||
|
$("#shuzi").html(dom)
|
||||||
|
}
|
||||||
|
// 饼图
|
||||||
|
function pieCharts(data) {
|
||||||
|
var chartDom = document.getElementById('middleDiv');
|
||||||
|
var myChart = echarts.init(chartDom);
|
||||||
|
var option;
|
||||||
|
|
||||||
|
option = {
|
||||||
|
color: myColor1,
|
||||||
|
legend: {
|
||||||
|
bottom: 60,
|
||||||
|
itemWidth: 30,
|
||||||
|
itemHeight: 20,
|
||||||
|
// itemGap:100,
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 20,
|
||||||
|
color: '#fff',
|
||||||
|
padding: [0, 10]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
series: [{
|
||||||
|
name: 'Nightingale Chart',
|
||||||
|
type: 'pie',
|
||||||
|
radius: [160, 260],
|
||||||
|
center: ['50%', '43%'],
|
||||||
|
// roseType: 'area',
|
||||||
|
itemStyle: {
|
||||||
|
borderRadius: 8
|
||||||
|
},
|
||||||
|
label: {
|
||||||
|
show: true,
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 24,
|
||||||
|
color: "#fff",
|
||||||
|
},
|
||||||
|
formatter: '{b}{c}\n{d}%'
|
||||||
|
},
|
||||||
|
data: data
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 条形图
|
||||||
|
function tiaoxintu(a,b) {
|
||||||
|
var chartDom1 = document.getElementById('drcrk');
|
||||||
|
var myChart = echarts.init(chartDom1);
|
||||||
|
var option;
|
||||||
|
|
||||||
|
const builderJson = {
|
||||||
|
all: Number(a)+Number(b),
|
||||||
|
charts: {
|
||||||
|
出库量: b,
|
||||||
|
入库量: a,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var myColor = ["#19ffec", "#19ffec"]
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
option = {
|
||||||
|
backgroundColor: {
|
||||||
|
type: 'pattern',
|
||||||
|
image: canvas,
|
||||||
|
repeat: 'repeat'
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
title: [{
|
||||||
|
subtext: '总计 ' + builderJson.all + ' 件',
|
||||||
|
left: 'center',
|
||||||
|
subtextStyle: {
|
||||||
|
color: '#ffb742',
|
||||||
|
fontSize: 20
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
grid: [{
|
||||||
|
top: 40,
|
||||||
|
left: 80,
|
||||||
|
bottom: 110
|
||||||
|
}],
|
||||||
|
xAxis: [{
|
||||||
|
type: 'value',
|
||||||
|
max: builderJson.all,
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00fff9',
|
||||||
|
fontSize: 20
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
yAxis: [{
|
||||||
|
type: 'category',
|
||||||
|
data: Object.keys(builderJson.charts),
|
||||||
|
axisLabel: {
|
||||||
|
interval: 0,
|
||||||
|
color: '#00fff9',
|
||||||
|
fontSize: 20,
|
||||||
|
rotate: 30
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
}],
|
||||||
|
series: [{
|
||||||
|
type: 'bar',
|
||||||
|
stack: 'chart',
|
||||||
|
z: 3,
|
||||||
|
label: {
|
||||||
|
color: '#fff',
|
||||||
|
position: 'right',
|
||||||
|
show: true,
|
||||||
|
fontSize: 20
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
barBorderRadius: 5,
|
||||||
|
// 修改每个柱子的颜色
|
||||||
|
color: function(params) {
|
||||||
|
var num = myColor.length;
|
||||||
|
return myColor[params.dataIndex % num]
|
||||||
|
},
|
||||||
|
},
|
||||||
|
// 修改柱子的距离
|
||||||
|
barCategoryGap: 0,
|
||||||
|
// 柱子的宽度
|
||||||
|
barWidth: 10,
|
||||||
|
data: Object.keys(builderJson.charts).map(function(key) {
|
||||||
|
return builderJson.charts[key];
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'bar',
|
||||||
|
stack: 'chart',
|
||||||
|
silent: true,
|
||||||
|
itemStyle: {
|
||||||
|
barBorderRadius: 2,
|
||||||
|
color: '#0b4a54'
|
||||||
|
},
|
||||||
|
data: Object.keys(builderJson.charts).map(function(key) {
|
||||||
|
return builderJson.all - builderJson.charts[key];
|
||||||
|
})
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 柱状图折现图
|
||||||
|
function zhuzhuangzhexiantu(data) {
|
||||||
|
var chartDom = document.getElementById('dycrk');
|
||||||
|
var myChart = echarts.init(chartDom);
|
||||||
|
var option;
|
||||||
|
var labelOption
|
||||||
|
labelOption = {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
verticalAlign: 'middle',
|
||||||
|
fontSize: 15,
|
||||||
|
color: "#ffffff"
|
||||||
|
};
|
||||||
|
option = {
|
||||||
|
legend: {
|
||||||
|
left: "65%",
|
||||||
|
textStyle: {
|
||||||
|
fontSize: 15,
|
||||||
|
color: "#19ffec"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tooltip: {},
|
||||||
|
dataset: {
|
||||||
|
dimensions: ['mouth', '入库', '出库'],
|
||||||
|
source: data
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
top: "20%",
|
||||||
|
left: '5%',
|
||||||
|
right: '5%',
|
||||||
|
bottom: '5%',
|
||||||
|
show: false, //显示边框
|
||||||
|
borderColor: "#012f4a", //边框颜色
|
||||||
|
containLabel: true //包含刻度文字在内
|
||||||
|
},
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
color: "rgba(25,255,255,.3)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
type: "bar",
|
||||||
|
showBackground: false,
|
||||||
|
barWidth: '50%',
|
||||||
|
label: labelOption,
|
||||||
|
itemStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||||
|
offset: 0,
|
||||||
|
color: '#19ffec'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 0.6,
|
||||||
|
color: '#07554e'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: '#04252b'
|
||||||
|
}
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
type: "line",
|
||||||
|
showBackground: true,
|
||||||
|
label: labelOption,
|
||||||
|
itemStyle: {
|
||||||
|
color: '#ffb742'
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 折线图
|
||||||
|
function zhexiantu(a, b, c, d, e) {
|
||||||
|
var chartDom = document.getElementById(a);
|
||||||
|
var myChart = echarts.init(chartDom);
|
||||||
|
var option;
|
||||||
|
var labelOption = {
|
||||||
|
show: true,
|
||||||
|
position: "top",
|
||||||
|
verticalAlign: 'middle',
|
||||||
|
fontSize: 15,
|
||||||
|
color: "#ffb742"
|
||||||
|
};
|
||||||
|
option = {
|
||||||
|
xAxis: {
|
||||||
|
type: 'category',
|
||||||
|
boundaryGap: false, //坐标轴两边不留白
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
type: 'value',
|
||||||
|
axisLabel: {
|
||||||
|
color: '#00f2f1', //文本颜色
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
// 设置背景横线
|
||||||
|
color: "#097176",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: '5%',
|
||||||
|
top: '10%',
|
||||||
|
// right: '4%',
|
||||||
|
bottom: '5%',
|
||||||
|
containLabel: true
|
||||||
|
},
|
||||||
|
series: [{
|
||||||
|
data: e,
|
||||||
|
type: 'line',
|
||||||
|
smooth: 0.2,
|
||||||
|
itemStyle: {
|
||||||
|
color: b
|
||||||
|
},
|
||||||
|
label: labelOption,
|
||||||
|
areaStyle: {
|
||||||
|
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
|
||||||
|
offset: 0,
|
||||||
|
color: c
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 1,
|
||||||
|
color: d
|
||||||
|
}
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
option && myChart.setOption(option);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
var biaoshi = 0
|
||||||
|
|
||||||
|
function info() {
|
||||||
|
var tr = $("#aa ul>li:eq(1)").clone();
|
||||||
|
var height = $("#kcxx").innerHeight();
|
||||||
|
var allheight = $("#box").innerHeight()
|
||||||
|
if (height > allheight) {
|
||||||
|
$("#aa ul>li:eq(1)").animate({
|
||||||
|
marginTop: "-1.8rem"
|
||||||
|
}, 500, function() {
|
||||||
|
$("#aa ul>li:eq(1)").remove();
|
||||||
|
})
|
||||||
|
biaoshi = 1
|
||||||
|
} else {
|
||||||
|
biaoshi = 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function liebiao(res) {
|
||||||
|
let data = res.stockMsg
|
||||||
|
let dom = "";
|
||||||
|
if (biaoshi == 2) {
|
||||||
|
$(".tt").remove()
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
if (i % 2 == 0) {
|
||||||
|
dom += "<li class='tt' style='background: #046566'><p>" + data[i].productId +
|
||||||
|
"</p><p>" + data[i].productName +
|
||||||
|
"</p><p>" + data[i].lotNo +
|
||||||
|
"</p><p>" + data[i].quantity + "</p></li>"
|
||||||
|
} else {
|
||||||
|
dom += "<li class='tt' style='background: #05383c'><p>" + data[i].productId +
|
||||||
|
"</p><p>" + data[i].productName +
|
||||||
|
"</p><p>" + data[i].lotNo +
|
||||||
|
"</p><p>" + data[i].quantity + "</p></li>"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
$("#kcxx").append(dom)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 时间
|
||||||
|
var t = null;
|
||||||
|
$(document).ready(function() {
|
||||||
|
time()
|
||||||
|
// getData()
|
||||||
|
// window.setInterval("getData()", 10000);
|
||||||
|
// getData2()
|
||||||
|
// window.setInterval("getData2()", 3000);
|
||||||
|
// info()
|
||||||
|
// window.setInterval("info()", 3000);
|
||||||
|
|
||||||
|
// mockAlarmData();
|
||||||
|
getAlarmData();
|
||||||
|
window.setInterval(getAlarmData, 1500);
|
||||||
|
|
||||||
|
getLaneData();
|
||||||
|
window.setInterval(getLaneData, 1500);
|
||||||
|
|
||||||
|
window.setInterval(scrollAlarmList, 1000);
|
||||||
|
})
|
||||||
|
|
||||||
|
function getAlarmData() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip + "/api/screen/selectFaultRecord?warehouseId="+warehouseId+"&type="+type,
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
if (res.code === 200) {
|
||||||
|
renderAlarmData(res.data);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(err) {
|
||||||
|
console.log("Error fetching alarm data", err);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderAlarmData(data) {
|
||||||
|
var dom = "";
|
||||||
|
// Ensure we have data
|
||||||
|
if (!data || data.length === 0) {
|
||||||
|
$(".alarm-items").html("");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < data.length; i++) {
|
||||||
|
var item = data[i];
|
||||||
|
var bg = i % 2 == 0 ? "#046566" : "#05383c";
|
||||||
|
|
||||||
|
// Map fields
|
||||||
|
// Time: Extract HH:mm:ss from startTime "yyyy-MM-dd HH:mm:ss"
|
||||||
|
var timeStr = item.startTime ? item.startTime.split(' ')[1] : "";
|
||||||
|
|
||||||
|
// Type: Default to "故障"
|
||||||
|
var type = "故障";
|
||||||
|
var color = "#ff4d4d"; // Red for fault
|
||||||
|
|
||||||
|
// Detail: deviceName + fault description
|
||||||
|
var faultDesc = item.fault;
|
||||||
|
/*if (item.deviceType === "ddj") {
|
||||||
|
faultDesc = faultDesc;
|
||||||
|
} else if (item.deviceType === "ssj") {
|
||||||
|
faultDesc = faultDesc;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
var detail = (item.deviceName || "") + " " + (faultDesc || "");
|
||||||
|
|
||||||
|
// Task No
|
||||||
|
var taskNo = item.taskNo || "";
|
||||||
|
|
||||||
|
dom += "<li class='alarm-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + taskNo + "</p>" +
|
||||||
|
"<p>" + timeStr + "</p>" +
|
||||||
|
"<p style='color:" + color + "'>" + type + "</p>" +
|
||||||
|
"<p>" + detail + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
$(".alarm-items").html(dom);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLaneData() {
|
||||||
|
$.ajax({
|
||||||
|
url: ip + "/api/screen/selectJobListByWarehouseIdAndType?warehouseId="+warehouseId+"&type="+type,
|
||||||
|
type: "GET",
|
||||||
|
dataType: "JSON",
|
||||||
|
success: function(res) {
|
||||||
|
if (res.code === 200) {
|
||||||
|
renderLaneData(res.data);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function(err) {
|
||||||
|
console.log("Error fetching lane data", err);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderLaneData(data) {
|
||||||
|
var laneIds = ['1', '2', '3']; // Keys in the data object
|
||||||
|
|
||||||
|
laneIds.forEach(function(key) {
|
||||||
|
var list = data[key] || [];
|
||||||
|
var content = "";
|
||||||
|
content += "<ul class='lane-list'>";
|
||||||
|
|
||||||
|
// Header
|
||||||
|
content += "<li class='lane-item header'>" +
|
||||||
|
"<p>任务号</p>" +
|
||||||
|
"<p>托盘码</p>" +
|
||||||
|
"<p>类型</p>" +
|
||||||
|
"<p>状态</p>" +
|
||||||
|
"</li>";
|
||||||
|
|
||||||
|
for (var i = 0; i < list.length; i++) {
|
||||||
|
var item = list[i];
|
||||||
|
var taskId = item.taskNo;
|
||||||
|
var palletId = item.trayCode || "";
|
||||||
|
var typeName = getTaskTypeName(item.inOrOut);
|
||||||
|
var statusName = getTaskStatusName(item.status);
|
||||||
|
|
||||||
|
var statusColor = (statusName === "执行中" || statusName === "完成") ? "#00ffc0" : "#ffb742";
|
||||||
|
var typeColor = (typeName.indexOf("入") > -1) ? "#0dede4" : "#ff7e00";
|
||||||
|
var bg = i % 2 == 0 ? "rgba(4, 101, 102, 0.5)" : "rgba(5, 56, 60, 0.5)";
|
||||||
|
|
||||||
|
content += "<li class='lane-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + taskId + "</p>" +
|
||||||
|
"<p>" + palletId + "</p>" +
|
||||||
|
"<p style='color:" + typeColor + "'>" + typeName + "</p>" +
|
||||||
|
"<p style='color:" + statusColor + "'>" + statusName + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
content += "</ul>";
|
||||||
|
$("#lane" + key).html(content);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTaskTypeName(code) {
|
||||||
|
// 空值/假值直接返回空字符串(保留原逻辑)
|
||||||
|
if (!code) return "";
|
||||||
|
// 将编码转为数字(兼容字符串/数字类型入参),判断大小后返回对应名称
|
||||||
|
const numCode = Number(code);
|
||||||
|
return numCode > 20 ? "出库" : "入库";
|
||||||
|
}
|
||||||
|
|
||||||
|
function getTaskStatusName(code) {
|
||||||
|
if (!code) return "";
|
||||||
|
if (code === "4") return "完成";
|
||||||
|
if (code === "0") return "创建";
|
||||||
|
if (code === "1" || code == "2" || code == "3") return "执行中";
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDdjFaultDescription(value) {
|
||||||
|
if (value === "0") return "待机";
|
||||||
|
if (value === "1") return "工作";
|
||||||
|
if (value === "1031") return "急停";
|
||||||
|
if (value === "1032") return "货叉不在中位";
|
||||||
|
if (value === '1033') return "行走变频报警";
|
||||||
|
if (value === "1034") return "升降变频报警";
|
||||||
|
if (value === "1035") return "货叉变频报警";
|
||||||
|
if (value === "1036") return "货叉变频报警";
|
||||||
|
if (value === "1037") return "运行限位故障";
|
||||||
|
if (value === "1038") return "升降限位故障";
|
||||||
|
if (value === "1039") return "运行不能纠偏";
|
||||||
|
if (value === "1040") return "升降不能纠偏";
|
||||||
|
if (value === "1041") return "水平测距出错";
|
||||||
|
if (value === "1042") return "垂直BPS出错";
|
||||||
|
if (value === "1043") return "超速保护";
|
||||||
|
if (value === "1044") return "前边超宽";
|
||||||
|
if (value === "1045") return "后边超宽";
|
||||||
|
if (value === "1046") return "左边歪斜";
|
||||||
|
if (value === "1047") return "右边歪斜";
|
||||||
|
if (value === "1048") return "超高1";
|
||||||
|
if (value === "1049") return "超高2";
|
||||||
|
if (value === "1050") return "放货完毕货叉有货";
|
||||||
|
if (value === "1051") return "取货时货叉有货";
|
||||||
|
if (value === "1052") return "放货目标有货";
|
||||||
|
if (value === "1053") return "取货完毕无货";
|
||||||
|
if (value === "1054") return "放货时货叉无货";
|
||||||
|
if (value === "1055") return "货叉动作超时";
|
||||||
|
if (value === "1056") return "货叉不能纠偏";
|
||||||
|
if (value === "1057") return "微升降超时";
|
||||||
|
if (value === "1058") return "松绳过载";
|
||||||
|
if (value === "1059") return "设定超限";
|
||||||
|
if (value === "1060") return "取双伸时单伸有货";
|
||||||
|
if (value === "1061") return "放双伸时单伸有货";
|
||||||
|
if (value === "1062") return "入库输送机任务不符";
|
||||||
|
if (value === "1063") return "安全门打开";
|
||||||
|
if (value === "9999") return "设备未联机";
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getSsjFaultDescription(value) {
|
||||||
|
if (value == 101) return "前超长";
|
||||||
|
if (value == 102) return "后超长";
|
||||||
|
if (value == 103) return "左超宽";
|
||||||
|
if (value == 104) return "右超宽";
|
||||||
|
if (value == 105) return "超高";
|
||||||
|
if (value == 106) return "称重异常";
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
function time() {
|
||||||
|
clearTimeout(t);
|
||||||
|
dt = new Date();
|
||||||
|
var y = dt.getFullYear();
|
||||||
|
var mt = dt.getMonth() + 1;
|
||||||
|
var day = dt.getDate();
|
||||||
|
var h = dt.getHours();
|
||||||
|
var m = dt.getMinutes();
|
||||||
|
var s = dt.getSeconds();
|
||||||
|
var a = new Date().getDay();
|
||||||
|
var b = "";
|
||||||
|
switch (a) {
|
||||||
|
case 0:
|
||||||
|
b = "日";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
b = "一";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
b = "二";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
b = "三";
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
b = "四";
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
b = "五";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
b = "六";
|
||||||
|
}
|
||||||
|
document.querySelector(".riqi").innerHTML = "星期" + b + "<br>" + y + "年" + mt + "月" + day + "日";
|
||||||
|
document.querySelector(".shijian").innerHTML = jialing(h) + ":" + jialing(m);
|
||||||
|
t = setTimeout(time, 1000);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function jialing(m) {
|
||||||
|
if (m < 10) {
|
||||||
|
m = "0" + m
|
||||||
|
return m;
|
||||||
|
} else {
|
||||||
|
return m;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function mockAlarmData() {
|
||||||
|
var alarms = [
|
||||||
|
{ time: "10:00:01", type: "故障", detail: "1号堆垛机通信中断", status: "未处理" },
|
||||||
|
{ time: "10:05:23", type: "警告", detail: "2号入库口货物堆积", status: "处理中" },
|
||||||
|
{ time: "10:15:11", type: "故障", detail: "3号出库口光电异常", status: "未处理" },
|
||||||
|
{ time: "10:20:45", type: "提示", detail: "系统自动备份完成", status: "已完成" },
|
||||||
|
{ time: "10:30:00", type: "警告", detail: "库位占用率过高", status: "处理中" },
|
||||||
|
{ time: "10:35:12", type: "故障", detail: "1号巷道急停按下", status: "未处理" },
|
||||||
|
{ time: "10:40:00", type: "提示", detail: "入库任务下发成功", status: "已完成" },
|
||||||
|
{ time: "10:45:30", type: "警告", detail: "网络延迟较高", status: "处理中" }
|
||||||
|
];
|
||||||
|
|
||||||
|
var dom = "";
|
||||||
|
for (var i = 0; i < alarms.length; i++) {
|
||||||
|
var bg = i % 2 == 0 ? "#046566" : "#05383c";
|
||||||
|
var color = alarms[i].type === "故障" ? "#ff4d4d" : (alarms[i].type === "警告" ? "#ffb742" : "#fff");
|
||||||
|
|
||||||
|
dom += "<li class='alarm-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + alarms[i].time + "</p>" +
|
||||||
|
"<p style='color:" + color + "'>" + alarms[i].type + "</p>" +
|
||||||
|
"<p>" + alarms[i].detail + "</p>" +
|
||||||
|
"<p>" + alarms[i].status + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
$(".alarm-items").html(dom);
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrollAlarmList() {
|
||||||
|
var list = $(".alarm-items");
|
||||||
|
var firstItem = list.find("li:first");
|
||||||
|
if (firstItem.length === 0) return;
|
||||||
|
|
||||||
|
var height = firstItem.height();
|
||||||
|
// Default to some height if 0 (e.g. if hidden)
|
||||||
|
if (height === 0) height = 30;
|
||||||
|
|
||||||
|
if (list.children().length > 3) {
|
||||||
|
firstItem.animate({
|
||||||
|
marginTop: -height + "px"
|
||||||
|
}, 500, function() {
|
||||||
|
firstItem.css("marginTop", 0).appendTo(list);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function mockLaneData() {
|
||||||
|
// Generate mock data for 3 lanes (merged inbound/outbound)
|
||||||
|
var laneIds = ['lane1', 'lane2', 'lane3'];
|
||||||
|
|
||||||
|
laneIds.forEach(function(id) {
|
||||||
|
var content = "";
|
||||||
|
// Create a list structure
|
||||||
|
content += "<ul class='lane-list'>";
|
||||||
|
|
||||||
|
// Header
|
||||||
|
content += "<li class='lane-item header'>" +
|
||||||
|
"<p>任务号</p>" +
|
||||||
|
"<p>托盘码</p>" +
|
||||||
|
"<p>类型</p>" +
|
||||||
|
"<p>状态</p>" +
|
||||||
|
"</li>";
|
||||||
|
|
||||||
|
// Randomly generate 4-8 rows of data
|
||||||
|
var rowCount = Math.floor(Math.random() * 5) + 4;
|
||||||
|
for (var i = 0; i < rowCount; i++) {
|
||||||
|
var taskId = "T" + Math.floor(Math.random() * 10000);
|
||||||
|
var palletId = "P" + Math.floor(Math.random() * 1000);
|
||||||
|
var type = Math.random() > 0.5 ? "入库" : "出库";
|
||||||
|
var status = Math.random() > 0.5 ? "执行中" : "等待中";
|
||||||
|
var statusColor = status === "执行中" ? "#00ffc0" : "#ffb742";
|
||||||
|
var typeColor = type === "入库" ? "#0dede4" : "#ff7e00";
|
||||||
|
var bg = i % 2 == 0 ? "rgba(4, 101, 102, 0.5)" : "rgba(5, 56, 60, 0.5)";
|
||||||
|
|
||||||
|
content += "<li class='lane-item' style='background: " + bg + "'>" +
|
||||||
|
"<p>" + taskId + "</p>" +
|
||||||
|
"<p>" + palletId + "</p>" +
|
||||||
|
"<p style='color:" + typeColor + "'>" + type + "</p>" +
|
||||||
|
"<p style='color:" + statusColor + "'>" + status + "</p>" +
|
||||||
|
"</li>";
|
||||||
|
}
|
||||||
|
|
||||||
|
content += "</ul>";
|
||||||
|
$("#" + id).html(content);
|
||||||
|
});
|
||||||
|
}
|
||||||
4
unpackage/cache/wgt/H5030C5DA/js/jquery-3.1.1.min.js
vendored
Normal file
180
unpackage/cache/wgt/H5030C5DA/json/pie.json
vendored
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
{
|
||||||
|
"kczl":"888716",
|
||||||
|
"zhw":"6542",
|
||||||
|
"rkl":"5",
|
||||||
|
"ckl":"8",
|
||||||
|
"pie": [{
|
||||||
|
"value": 20,
|
||||||
|
"name": "空货位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 18,
|
||||||
|
"name": "满货位"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 10,
|
||||||
|
"name": "入库已分配"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 8,
|
||||||
|
"name": "出库已分配"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 12,
|
||||||
|
"name": "入库需盘点"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": 5,
|
||||||
|
"name": "出库需盘点"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"statistic": [{
|
||||||
|
"mouth": "1",
|
||||||
|
"入库": 1,
|
||||||
|
"出库": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "2",
|
||||||
|
"入库": 3,
|
||||||
|
"出库": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "3",
|
||||||
|
"入库": 4,
|
||||||
|
"出库": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "4",
|
||||||
|
"入库": 6,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "5",
|
||||||
|
"入库": 1,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "6",
|
||||||
|
"入库": 6,
|
||||||
|
"出库": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "7",
|
||||||
|
"入库": 3,
|
||||||
|
"出库": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "8",
|
||||||
|
"入库": 6,
|
||||||
|
"出库": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "9",
|
||||||
|
"入库": 7,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "10",
|
||||||
|
"入库": 5,
|
||||||
|
"出库": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "11",
|
||||||
|
"入库": 5,
|
||||||
|
"出库": 6
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "12",
|
||||||
|
"入库": 3,
|
||||||
|
"出库": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "13",
|
||||||
|
"入库": 5,
|
||||||
|
"出库": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "14",
|
||||||
|
"入库": 7,
|
||||||
|
"出库": 7
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mouth": "15",
|
||||||
|
"入库": 4,
|
||||||
|
"出库": 5
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bzrk": [5, 8, 4, 5, 6, 9, 5],
|
||||||
|
"bzck": [6, 4, 9, 5, 4, 7, 4],
|
||||||
|
"taskDetail": [{
|
||||||
|
"jobId": "RY202205090001",
|
||||||
|
"taskNo": "10196",
|
||||||
|
"trayCode": "987789",
|
||||||
|
"cargoSpaceId": "010100102",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090002",
|
||||||
|
"taskNo": "10197",
|
||||||
|
"trayCode": "111111",
|
||||||
|
"cargoSpaceId": "010100103",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090003",
|
||||||
|
"taskNo": "10198",
|
||||||
|
"trayCode": "222222",
|
||||||
|
"cargoSpaceId": "010100104",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090004",
|
||||||
|
"taskNo": "10199",
|
||||||
|
"trayCode": "333333",
|
||||||
|
"cargoSpaceId": "010100201",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090002",
|
||||||
|
"taskNo": "10197",
|
||||||
|
"trayCode": "111111",
|
||||||
|
"cargoSpaceId": "010100103",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090003",
|
||||||
|
"taskNo": "10198",
|
||||||
|
"trayCode": "222222",
|
||||||
|
"cargoSpaceId": "010100104",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090004",
|
||||||
|
"taskNo": "10199",
|
||||||
|
"trayCode": "333333",
|
||||||
|
"cargoSpaceId": "010100201",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090002",
|
||||||
|
"taskNo": "10197",
|
||||||
|
"trayCode": "111111",
|
||||||
|
"cargoSpaceId": "010100103",
|
||||||
|
"type": "入库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090003",
|
||||||
|
"taskNo": "10198",
|
||||||
|
"trayCode": "222222",
|
||||||
|
"cargoSpaceId": "010100104",
|
||||||
|
"type": "出库"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"jobId": "RY202205090004",
|
||||||
|
"taskNo": "10199",
|
||||||
|
"trayCode": "333333",
|
||||||
|
"cargoSpaceId": "010100201",
|
||||||
|
"type": "出库"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
1
unpackage/cache/wgt/H5030C5DA/manifest.json
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"@platforms":["android","iPhone","iPad"],"id":"H5030C5DA","name":"FT541dp","version":{"name":"1.0","code":"100"},"description":"","icons":{"72":"icon.png"},"launch_path":"index.html","developer":{"name":"","email":"","url":""},"permissions":{"Accelerometer":{"description":"访问加速度感应器"},"Audio":{"description":"访问麦克风"},"Cache":{"description":"管理应用缓存"},"Console":{"description":"跟踪调试输出日志"},"Device":{"description":"访问设备信息"},"Downloader":{"description":"文件下载管理"},"Events":{"description":"应用扩展事件"},"File":{"description":"访问本地文件系统"},"Gallery":{"description":"访问系统相册"},"Invocation":{"description":"使用Native.js能力"},"Orientation":{"description":"访问方向感应器"},"Proximity":{"description":"访问距离感应器"},"Storage":{"description":"管理应用本地数据"},"Uploader":{"description":"管理文件上传任务"},"Runtime":{"description":"访问运行期环境"},"XMLHttpRequest":{"description":"跨域网络访问"},"Zip":{"description":"文件压缩与解压缩"},"Speech":{"description":"管理语音识别插件"},"Webview":{"description":"窗口管理"},"NativeUI":{"description":"原生UI控件"},"Navigator":{"description":"浏览器信息"},"NativeObj":{"description":"原生对象"}},"plus":{"splashscreen":{"autoclose":true,"waiting":true},"popGesture":"close","runmode":"normal","signature":"Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==","distribute":{"apple":{"appid":"","devices":"universal","frameworks":[],"mobileprovision":"","p12":"","password":""},"google":{"aliasname":"","keystore":"","packagename":"plus.H5030C5DA","password":"","permissions":["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"custompermissions":true},"orientation":["portrait-primary"],"icons":{"ios":{"ipad":{"normal":"","normal7":"","retina":"","retina7":"","settings-normal":"","settings-retina":"","spotlight-normal":"","spotlight-normal7":"","spotlight-retina":"","spotlight-retina7":""},"iphone":{"normal":"","retina":"","retina7":"","retina8":"","settings-normal":"","settings-retina":"","settings-retina8":"","spotlight-normal":"","spotlight-retina":"","spotlight-retina7":""},"prerendered":true},"android":{"ldpi":"","mdpi":""}},"splashscreen":{"ios":{"iphone":{"default":"","retina35":"","retina40":"","retina47":"","retina55":"","retina55l":""},"ipad":{"portrait":"","portrait-retina":"","landscape":"","landscape-retina":"","portrait7":"","portrait-retina7":"","landscape7":"","landscape-retina7":""}},"android":{"mdpi":"","ldpi":"","hdpi":"","xhdpi":"","xxhdpi":""}},"ios":{"dSYMs":false}},"adid":"126168020307"},"screenOrientation":["portrait-primary"]}
|
||||||