自动化立体仓库 - WCS系统
#
luxiaotao1123
2022-03-09 8fc757864f420c2cd57adb046dfe3e621a363978
#
7个文件已修改
669 ■■■■ 已修改文件
src/main/webapp/static/css/console.css 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/crn.css 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/index.css 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/pipeline.css 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/console.html 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/crn.html 348 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/pipeline.html 191 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/css/console.css
@@ -28,7 +28,7 @@
    width: 100%;
    height: 23%    ;
    position: absolute;
    bottom: 1%;
    bottom: 2.5%;
}
/* 控制开关 */
.system-state {
src/main/webapp/static/css/crn.css
@@ -1,11 +1,14 @@
body {
    padding: 10px;
    background-color: #f1f1f1;
}
.button-window {
    float: left;
    width: 5%;
    width: 100%;
    height: 100%;
    padding: 10px;
    background-color: #6CA7A8;
    border-radius: 5px;
    box-shadow: 0 0 3px rgba(0 0 0 .3);
}
/* -------------------- 第一模块 -------------------- */
.log-board {
@@ -19,7 +22,7 @@
.command-log {
    float: left;
    height: 100%;
    width: 19%;
    width: 20%;
    text-align: center;
}
.command-log h2 {
@@ -51,7 +54,7 @@
.crn-state {
    float: left;
    height: 100%;
    width: 76%;
    width: 80%;
    overflow: auto;
}
/* 堆垛机状态表 */
src/main/webapp/static/css/index.css
@@ -41,7 +41,7 @@
}
.sidebar ul {
    font-size: 20px;
    font-weight: 700;
    font-weight: 5c00;
    padding-left: 15%;
}
@@ -51,16 +51,17 @@
}
.sidebar a:hover {
    color: rgb(87,214,201);
    color: rgb(255, 148, 111);
}
.nav-unselect {
    color: #5D7677;
    color: #FFFFFF;
}
.nav-select {
    color: rgb(87,214,201);
    font-weight: 900;
    color: rgb(255, 148, 111);
}
src/main/webapp/static/css/pipeline.css
@@ -1,5 +1,5 @@
body {
    padding: 10px;
    /*padding: 10px;*/
    background-color: #f1f1f1;
}
main {
@@ -11,13 +11,17 @@
}
.button-window {
    float: left;
    width: 5%;
    width: 100%;
    height: 100%;
    padding: 10px;
    background-color: #6CA7A8;
    border-radius: 5px;
    box-shadow: 0 0 3px rgba(0 0 0 .3);
}
.main-board {
    padding-left: 1%;
    float: left;
    width: 47.5%;
    width: 50%;
    height: 100%;
    overflow: auto;
}
src/main/webapp/views/console.html
@@ -1219,53 +1219,67 @@
</body>
</html>
<script>
    var tData = []
    var tData = [
        {"time":"2022-02-22 14:24:53","barcode":"80000009"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
        {"time":"2022-02-22 14:24:53","barcode":"80000019"},
    ]
    var tDate1 = []
    var tDate2 = []
    var tDate3 = []
    function getCodeData(){
        $.ajax({
            url:baseUrl +'/console/barcode/output/site',
            method:'GET',
            success:function (res) {
                if(res.code === 200){
                    tData = eval(res.data);
                    console.log(tData)
                    if(tData.length<=5){
                        tData1 = tData
                    } else if (tData.length<=10){
                        tDate1 = tData.slice(0,5)
                        tData.splice(0,5)
                        tDate2 = tData
                        console.log(tDate2)
                    } else if(tData.length<=15){
                        tDate1 = tData.slice(0,5)
                        tDate2 = tData.slice(6,10)
                        tData.splice(0,10)
                        tDate3 = tData
                        console.log(tDate3)
                    } else {
                        tData = tData.slice(-15)
                        tDate1 = tData.slice(-15)
                        tDate2 = tData.slice(-10)
                        tDate3 = tData.slice(-5)
                    }
                }
            }
        })
    // function getCodeData(){
    //     $.ajax({
    //         url:baseUrl +'/xgmwcs/console/barcode/output/site',
    //         method:'GET',
    //         success:function (res) {
    //             if(res.code === 200){
    //                 tData = res.data
    //             }
    //         }
    //     })
    // }
    // setInterval(getCodeData(),1000)
    if(tData.length<=5){
        tData1 = tData
    } else if (tData.length<=10){
        tDate1 = tData.slice(0,5)
        tData.splice(0,5)
        tDate2 = tData
    } else if(tData.length<=15){
        tDate1 = tData.slice(0,5)
        tDate2 = tData.slice(6,10)
        tData.splice(0,10)
        tDate3 = tData
    } else {
        tData = tData.slice(-15)
        tDate1 = tData.slice(-15)
        tDate2 = tData.slice(-10)
        tDate3 = tData.slice(-5)
    }
    setInterval(function () {
        getCodeData();
        renderBarCode();
    }, 1000)
    function renderBarCode() {
        for (var i = 0;i<tDate1.length;i++){
            console.log(tDate1[i])
            var str1 = '<li><span>' + tDate1[i].barcode + '</span><span class="right">' + tDate1[i].time + '</span></li>'
            $('#barcode1').append(str1)
        }
@@ -1278,6 +1292,7 @@
            $('#barcode3').append(str3)
        }
    }
    setInterval(renderBarCode(),1000)
</script>
<script type="text/javascript">
    // 弹窗站点信息
@@ -1399,7 +1414,6 @@
            },
            method: 'POST',
            success: function (res) {
                console.log(res)
                layer.close(index);
                if (res.code === 200){
                    if (res.data.status) {
src/main/webapp/views/crn.html
@@ -41,187 +41,193 @@
    </style>
</head>
<body>
<div class="button-window"></div>
<!-- 日志监控板 -->
<div class="log-board">
    <!-- 执行命令 -->
    <!-- 执行命令 -->
    <div class="command-log">
        <h3>执行中的命令</h3>
        <div class="crn-command-item">
            <label>1#</label>
            <button id="demoBtn-1" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
            <!--            <span>&nbsp;</span>-->
            <input id="crn1" disabled="disabled">
        </div>
        <div class="crn-command-item">
            <label>2#</label>
            <button id="demoBtn-2" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
            <!--            <span>&nbsp;</span>-->
            <input id="crn2" disabled="disabled">
        </div>
        <div class="crn-command-item">
            <label>3#</label>
            <button id="demoBtn-3" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
            <!--            <span>&nbsp;</span>-->
            <input id="crn3" disabled="disabled">
        </div>
        <div class="crn-command-item">
            <label>4#</label>
            <button id="demoBtn-4" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
            <!--            <span>&nbsp;</span>-->
            <input id="crn4" disabled="disabled">
        </div>
        <div class="crn-command-item">
            <label>5#</label>
            <button id="demoBtn-5" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
            <!--            <span>&nbsp;</span>-->
            <input id="crn5" disabled="disabled">
        </div>
    </div>
    <!-- 堆垛机状态位信息 -->
    <div class="crn-state">
        <table id="crn-state-table">
            <thead>
            <tr>
                <th>堆垛机</th>
                <th>模式</th>
                <th>状态</th>
                <th>有物</th>
                <th>列</th>
                <th>层</th>
                <th>货叉定位</th>
                <th>载货台定位</th>
                <th>走行在定位</th>
                <th>故障代码</th>
                <th>故障描述</th>
            </tr>
            </thead>
            <tbody>
            </tbody>
        </table>
    </div>
<div style="padding: 10px;height: 100%;float: left;width: 6%">
    <div class="button-window"></div>
</div>
<!-- 堆垛机状态 -->
<div class="crn-msg">
    <table id="crn-msg-table">
        <thead>
        <tr>
            <th>堆垛机</th>
            <th>工作号</th>
            <th>状态</th>
            <th>源站</th>
            <th>目标站</th>
            <th>源库位</th>
            <th>目标库位</th>
            <th>走行速度(m/min)</th>
            <th>升降速度(m/min)</th>
            <th>叉牙速度(m/min)</th>
            <th>走行距离(m)</th>
            <th>升降距离(m)</th>
            <th>走行时长(s)</th>
            <th>升降时长(s)</th>
        </tr>
        </thead>
        <tbody>
        </tbody>
    </table>
</div>
<!-- 手动操作 -->
<div class="crn-operation">
<div style="height: 100%;padding-left: 6%">
    <div style="padding: 10px;height: 100%">
        <!-- 日志监控板 -->
        <div class="log-board">
            <!-- 执行命令 -->
    <!-- 遮罩层 -->
    <div class="crn-operation-shade">
            <!-- 执行命令 -->
            <div class="command-log">
                <h3>执行中的命令</h3>
                <div class="crn-command-item">
                    <label>1#</label>
                    <button id="demoBtn-1" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
                    <!--            <span>&nbsp;</span>-->
                    <input id="crn1" disabled="disabled">
                </div>
                <div class="crn-command-item">
                    <label>2#</label>
                    <button id="demoBtn-2" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
                    <!--            <span>&nbsp;</span>-->
                    <input id="crn2" disabled="disabled">
                </div>
                <div class="crn-command-item">
                    <label>3#</label>
                    <button id="demoBtn-3" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
                    <!--            <span>&nbsp;</span>-->
                    <input id="crn3" disabled="disabled">
                </div>
                <div class="crn-command-item">
                    <label>4#</label>
                    <button id="demoBtn-4" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
                    <!--            <span>&nbsp;</span>-->
                    <input id="crn4" disabled="disabled">
                </div>
                <div class="crn-command-item">
                    <label>5#</label>
                    <button id="demoBtn-5" class="demoBtn" onclick="demoSwitch(this.id)"> - </button>
                    <!--            <span>&nbsp;</span>-->
                    <input id="crn5" disabled="disabled">
                </div>
            </div>
            <!-- 堆垛机状态位信息 -->
            <div class="crn-state">
                <table id="crn-state-table">
                    <thead>
                    <tr>
                        <th>堆垛机</th>
                        <th>模式</th>
                        <th>状态</th>
                        <th>有物</th>
                        <th>列</th>
                        <th>层</th>
                        <th>货叉定位</th>
                        <th>载货台定位</th>
                        <th>走行在定位</th>
                        <th>故障代码</th>
                        <th>故障描述</th>
                    </tr>
                    </thead>
                    <tbody>
                    </tbody>
                </table>
            </div>
        </div>
        <!-- 堆垛机状态 -->
        <div class="crn-msg">
            <table id="crn-msg-table">
                <thead>
                <tr>
                    <th>堆垛机</th>
                    <th>工作号</th>
                    <th>状态</th>
                    <th>源站</th>
                    <th>目标站</th>
                    <th>源库位</th>
                    <th>目标库位</th>
                    <th>走行速度(m/min)</th>
                    <th>升降速度(m/min)</th>
                    <th>叉牙速度(m/min)</th>
                    <th>走行距离(m)</th>
                    <th>升降距离(m)</th>
                    <th>走行时长(s)</th>
                    <th>升降时长(s)</th>
                </tr>
                </thead>
                <tbody>
                </tbody>
            </table>
        </div>
        <!-- 手动操作 -->
        <div class="crn-operation">
            <!-- 遮罩层 -->
            <div class="crn-operation-shade">
        <span class="crn-operation-shade-span">
            WCS 系统运行中,请停止后操作
        </span>
    </div>
            </div>
    <!-- 设备任务选择 -->
    <div class="task-select">
        <!-- 堆垛机选择 -->
        <div id="crn-select" class="operator-item">
            <span class="select-title">堆垛机号</span>
            <div class="select-container">
                <label><input type="radio" name="crnSelect" value="1" checked>&nbsp;1号堆垛机</label>
                <label><input type="radio" name="crnSelect" value="2">&nbsp;2号堆垛机</label>
                <label><input type="radio" name="crnSelect" value="3">&nbsp;3号堆垛机</label>
                <label><input type="radio" name="crnSelect" value="4">&nbsp;4号堆垛机</label>
                <label><input type="radio" name="crnSelect" value="5">&nbsp;5号堆垛机</label>
            <!-- 设备任务选择 -->
            <div class="task-select">
                <!-- 堆垛机选择 -->
                <div id="crn-select" class="operator-item">
                    <span class="select-title">堆垛机号</span>
                    <div class="select-container">
                        <label><input type="radio" name="crnSelect" value="1" checked>&nbsp;1号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="2">&nbsp;2号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="3">&nbsp;3号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="4">&nbsp;4号堆垛机</label>
                        <label><input type="radio" name="crnSelect" value="5">&nbsp;5号堆垛机</label>
                    </div>
                </div>
                <!-- 源站/源库位 选择 -->
                <div id="source-select" class="operator-item">
                    <span class="select-title">源站/源库位</span>
                    <div class="select-container">
                        <div class="select-container-item">
                            <span>站</span>
                            <label><input id="sourceStaNo" type="number" name="points" min="0" /></label>
                        </div>
                        <div class="select-container-item">
                            <span>排</span>
                            <label><input id="sourceRow" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                        </div>
                        <div class="select-container-item">
                            <span>列</span>
                            <label><input id="sourceBay" type="number" name="points" min="0" style="background-color: #a9eeff" value="0" /></label>
                        </div>
                        <div class="select-container-item">
                            <span>层</span>
                            <label><input id="sourceLev" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                        </div>
                    </div>
                </div>
                <!-- 目标站/目标库位 选择 -->
                <div id="target-select" class="operator-item">
                    <span class="select-title">目标站/目标库位</span>
                    <div class="select-container">
                        <div class="select-container-item">
                            <span>站</span>
                            <label><input id="staNo" type="number" name="points" min="0" /></label>
                        </div>
                        <div class="select-container-item">
                            <span>排</span>
                            <label><input id="row" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                        </div>
                        <div class="select-container-item">
                            <span>列</span>
                            <label><input id="bay" type="number" name="points" min="0" style="background-color: #a9eeff" value="0" /></label>
                        </div>
                        <div class="select-container-item">
                            <span>层</span>
                            <label><input id="lev" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                        </div>
                    </div>
                </div>
            </div>
            <!-- 设备任务操作 -->
            <div class="task-operator">
                <fieldset>
                    <legend>手动操作</legend>
                    <div class="button-group">
                        <button class="item" onclick="put()">入库</button>
                        <button class="item" onclick="take()">出库</button>
                        <button class="item" onclick="stockMove()">库位转移</button>
                        <button class="item" onclick="siteMove()">站到站</button>
                        <!--                <button class="item" onclick="bacOrigin()">回原点</button>-->
                        <!--                <button class="item" onclick="reverseOrigin()">反原点</button>-->
                        <!--                <button class="item" onclick="coorMove()">坐标移行</button>-->
                        <button class="item" onclick="taskComplete()">任务完成</button>
                        <!--                <button class="item" onclick="pause()">暂停</button>-->
                        <!--                <button class="item" onclick="boot()">启动</button>-->
                        <button class="item" onclick="clearCommand()">清除命令</button>
                        <button class="item" onclick="handleReset()">复位</button>
                    </div>
                </fieldset>
            </div>
        </div>
        <!-- 源站/源库位 选择 -->
        <div id="source-select" class="operator-item">
            <span class="select-title">源站/源库位</span>
            <div class="select-container">
                <div class="select-container-item">
                    <span>站</span>
                    <label><input id="sourceStaNo" type="number" name="points" min="0" /></label>
                </div>
                <div class="select-container-item">
                    <span>排</span>
                    <label><input id="sourceRow" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                </div>
                <div class="select-container-item">
                    <span>列</span>
                    <label><input id="sourceBay" type="number" name="points" min="0" style="background-color: #a9eeff" value="0" /></label>
                </div>
                <div class="select-container-item">
                    <span>层</span>
                    <label><input id="sourceLev" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                </div>
            </div>
        </div>
        <!-- 目标站/目标库位 选择 -->
        <div id="target-select" class="operator-item">
            <span class="select-title">目标站/目标库位</span>
            <div class="select-container">
                <div class="select-container-item">
                    <span>站</span>
                    <label><input id="staNo" type="number" name="points" min="0" /></label>
                </div>
                <div class="select-container-item">
                    <span>排</span>
                    <label><input id="row" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                </div>
                <div class="select-container-item">
                    <span>列</span>
                    <label><input id="bay" type="number" name="points" min="0" style="background-color: #a9eeff" value="0" /></label>
                </div>
                <div class="select-container-item">
                    <span>层</span>
                    <label><input id="lev" type="number" name="points" min="1" style="background-color: #a9eeff" value="1" /></label>
                </div>
            </div>
        <!-- 堆垛机日志输出 -->
        <div class="crn-output-board">
            <textarea id="crn-output"></textarea>
        </div>
    </div>
    <!-- 设备任务操作 -->
    <div class="task-operator">
        <fieldset>
            <legend>手动操作</legend>
            <div class="button-group">
                <button class="item" onclick="put()">入库</button>
                <button class="item" onclick="take()">出库</button>
                <button class="item" onclick="stockMove()">库位转移</button>
                <button class="item" onclick="siteMove()">站到站</button>
                <!--                <button class="item" onclick="bacOrigin()">回原点</button>-->
                <!--                <button class="item" onclick="reverseOrigin()">反原点</button>-->
                <!--                <button class="item" onclick="coorMove()">坐标移行</button>-->
                <button class="item" onclick="taskComplete()">任务完成</button>
                <!--                <button class="item" onclick="pause()">暂停</button>-->
                <!--                <button class="item" onclick="boot()">启动</button>-->
                <button class="item" onclick="clearCommand()">清除命令</button>
                <button class="item" onclick="handleReset()">复位</button>
            </div>
        </fieldset>
    </div>
</div>
<!-- 堆垛机日志输出 -->
<div class="crn-output-board">
    <textarea id="crn-output"></textarea>
</div>
</body>
<script>
src/main/webapp/views/pipeline.html
@@ -17,98 +17,109 @@
    </style>
</head>
<body>
<main>
<div style="padding: 10px;height: 100%;float: left;width: 6%">
    <div class="button-window"></div>
    <!-- plc异常日志监控版 -->
    <div id="plc-error" class="main-board" style="padding-left: 10px">
        <!-- 头部 -->
        <div class="plc-log-header">
            <!--            <div style="height: 40%">-->
            <!--                <span>东侧PLC执行指令</span>-->
            <!--            </div>-->
            <!--            <div style="height: 40%">-->
            <!--                <span>西侧PLC执行指令</span>-->
            <!--            </div>-->
            <div>
                <span style="color: #1E9FFF">PLC异常信息表:</span>
            </div>
        </div>
        <!-- 主体 -->
        <div class="plc-log-body">
            <table id="plc-error-table">
                <thead>
                <tr>
                    <th style="width: 200px">序号</th>
                    <th style="width: 400px">PLC错误描述</th>
                    <th style="width: 400px">异常</th>
                </tr>
                </thead>
                <tbody>
                </tbody>
            </table>
        </div>
    </div>
    <!-- 站点状态数据监控版 -->
    <div id="site-monitor" class="main-board">
        <!-- 表格 -->
        <table id="site-table">
            <!-- 表头 -->
            <thead>
            <tr>
                <th>站号</th>
                <th>工作号</th>
                <th>自动</th>
                <th>有物</th>
                <th>可入</th>
                <th>可出</th>
                <th>入库标记</th>
                <th>空板信号</th>
                <th>目标站</th>
            </tr>
            </thead>
            <!-- 表格内容 -->
            <tbody></tbody>
        </table>
    </div>
</main>
<footer>
    <textarea id="output"></textarea>
</footer>
<div id="site-detl" style="display: none">
    <form>
        <div class="form-item">
            <label class="form-label">站号:</label>
            <div class="form-input">
                <input id="siteId" name="siteId" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled">
            </div>
        </div>
        <div class="form-item">
            <label class="form-label">工作号:</label>
            <div class="form-input">
                <input id="workNo" name="workNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
            </div>
        </div>
        <div class="form-item">
            <label class="form-label">目标站:</label>
            <div class="form-input">
                <input id="staNo" name="staNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
            </div>
        </div>
        <div class="form-item">
            <label class="form-label">入库标记:</label>
            <div class="form-input">
                <input id="pakMk" name="pakMk" type="text" class="layui-input" autocomplete="off">
            </div>
        </div>
        <div class="form-item form-button-container">
            <button class="form-button" id="save">保存</button>
            <button class="form-button" id="cancel" style="background-color: #D0D0D0">取消</button>
        </div>
    </form>
</div>
<div style="height: 100%;padding-left: 6%">
    <div style="padding: 10px;height: 100%">
        <main>
            <!-- plc异常日志监控版 -->
            <div id="plc-error" class="main-board" style="padding-left: 10px">
                <!-- 头部 -->
                <div class="plc-log-header">
                    <!--            <div style="height: 40%">-->
                    <!--                <span>东侧PLC执行指令</span>-->
                    <!--            </div>-->
                    <!--            <div style="height: 40%">-->
                    <!--                <span>西侧PLC执行指令</span>-->
                    <!--            </div>-->
                    <div>
                        <span style="color: #1E9FFF">PLC异常信息表:</span>
                    </div>
                </div>
                <!-- 主体 -->
                <div class="plc-log-body">
                    <table id="plc-error-table">
                        <thead>
                        <tr>
                            <th style="width: 200px">序号</th>
                            <th style="width: 400px">PLC错误描述</th>
                            <th style="width: 400px">异常</th>
                        </tr>
                        </thead>
                        <tbody>
                        </tbody>
                    </table>
                </div>
            </div>
            <!-- 站点状态数据监控版 -->
            <div id="site-monitor" class="main-board">
                <!-- 表格 -->
                <table id="site-table">
                    <!-- 表头 -->
                    <thead>
                    <tr>
                        <th>站号</th>
                        <th>工作号</th>
                        <th>自动</th>
                        <th>有物</th>
                        <th>可入</th>
                        <th>可出</th>
                        <th>入库标记</th>
                        <th>空板信号</th>
                        <th>目标站</th>
                    </tr>
                    </thead>
                    <!-- 表格内容 -->
                    <tbody></tbody>
                </table>
            </div>
        </main>
        <footer>
            <textarea id="output"></textarea>
        </footer>
        <div id="site-detl" style="display: none">
            <form>
                <div class="form-item">
                    <label class="form-label">站号:</label>
                    <div class="form-input">
                        <input id="siteId" name="siteId" class="layui-input" lay-verify="required|number" autocomplete="off" disabled="disabled">
                    </div>
                </div>
                <div class="form-item">
                    <label class="form-label">工作号:</label>
                    <div class="form-input">
                        <input id="workNo" name="workNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
                    </div>
                </div>
                <div class="form-item">
                    <label class="form-label">目标站:</label>
                    <div class="form-input">
                        <input id="staNo" name="staNo" type="number" class="layui-input" lay-verify="number" autocomplete="off">
                    </div>
                </div>
                <div class="form-item">
                    <label class="form-label">入库标记:</label>
                    <div class="form-input">
                        <input id="pakMk" name="pakMk" type="text" class="layui-input" autocomplete="off">
                    </div>
                </div>
                <div class="form-item form-button-container">
                    <button class="form-button" id="save">保存</button>
                    <button class="form-button" id="cancel" style="background-color: #D0D0D0">取消</button>
                </div>
            </form>
        </div>
    </div>
</div>
</body>
<script>
    // 初始化