From b890d1c574d3d8332def7f4590508a7918139ae0 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 07 十一月 2025 16:57:22 +0800
Subject: [PATCH] #
---
src/main/webapp/views/console.html | 2038 ++++++++++++++++++++++++++++-------------------------------
1 files changed, 984 insertions(+), 1,054 deletions(-)
diff --git a/src/main/webapp/views/console.html b/src/main/webapp/views/console.html
index cf0e3b8..6a06b46 100644
--- a/src/main/webapp/views/console.html
+++ b/src/main/webapp/views/console.html
@@ -1,1076 +1,1006 @@
<!DOCTYPE html>
<html lang="en">
-<head>
- <meta charset="utf-8">
- <title>WCS鎺у埗涓績</title>
- <link rel="stylesheet" href="../static/css/console.css">
- <link rel="stylesheet" href="../static/css/animate.min.css">
- <script src="../static/js/jquery/jquery-3.3.1.min.js"></script>
- <script src="../static/js/layer/layer.js"></script>
- <script type="text/javascript" src="../static/js/common.js"></script>
-</head>
-<body>
-<div class="root">
- <header class="header">
- <h1>鑷姩浠撳簱WCS鐩戞帶鍥�</h1>
- <h6>AUTOMATIC WAREHOUSE WCS MONITORING DIAGRAM</h6>
- </header>
- <main class="main">
- <!--绗�1鍒� -->
- <div class="site-row site-row-1" id="fool1">
- <div id="site-100" class="site" style="height: 38px;line-height: 38px;width:156px;">100</div>
+ <head>
+ <meta charset="UTF-8">
+ <title>WCS鎺у埗涓績</title>
+ <link rel="stylesheet" href="../static/css/animate.min.css">
+ <link rel="stylesheet" href="../static/vue/element/element.css">
+ <link rel="stylesheet" href="../static/css/console_vue.css">
+ <link rel="stylesheet" href="../static/css/toggle-switch.css">
+ <script type="text/javascript" src="../static/js/jquery/jquery-3.3.1.min.js"></script>
+ <script type="text/javascript" src="../static/layui/layui.js"></script>
+ <script type="text/javascript" src="../static/js/handlebars/handlebars-v4.5.3.js"></script>
+ <script type="text/javascript" src="../static/js/common.js"></script>
+ <script type="text/javascript" src="../static/vue/js/vue.min.js"></script>
+ <script type="text/javascript" src="../static/vue/element/element.js"></script>
+ <style>
- <div id="site-101" class="site" style="height: 38px;line-height: 38px;width:156px;">101</div>
+ </style>
+ </head>
+ <body>
+ <div id="app">
+ <div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 30px;">
+ <div id="mapDataId" style="zoom: 0.6;position: relative;">
+ <table class="excel-table">
+ <tr v-for="(row,index) in map" :key="index">
+ <td
+ v-for="(col,idx) in row" :key="idx"
+ :rowspan="col.rowSpan"
+ :colspan="col.colSpan"
+ :style="{width: col.width}"
+ v-if="col.type != 'merge'"
+ >
+ <div v-if="col.type == 'none'">
+ <div class="item" style="visibility: hidden">{{idx}}</div>
+ </div>
+ <div v-else-if="col.type == 'shelf'">
+ <div class="shelf">{{col.shelfIdx}}</div>
+ </div>
+ <div v-else-if="col.type == 'devp'">
+ <div class="site" :style="{height: col.rowPx}" :id="'site-' + col.value" @click="openSite(col.value)">{{col.value}}</div>
+ </div>
+ <div v-else-if="col.type == 'rgv'" style="position: relative;">
+ <div class="rgv-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'rgv-' + getDeviceNo(col.value)" @click="openRgv(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div>
+ <div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div>
+ <div class="track-item" v-else :id="'rgvTrackSiteNo-' + getTrackSiteNo(col.value)"></div>
+ </div>
+ <div v-else-if="col.type == 'crn'">
+ <div class="crn-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'crn-' + getDeviceNo(col.value)" @click="openCrn(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div>
+ <div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div>
+ <div class="track-item" v-else :id="'crnTrackSiteNo-' + getTrackSiteNo(col.value)"></div>
+ </div>
+ </td>
- <div id="site-102" class="site" style="height: 38px;line-height: 38px;width:156px;">102</div>
- </div>
- <!--绗�2鍒�-->
- <div class="site-row site-row-2" id="fool2" style="display: none">
- <div id="site-200" class="site" style="height: 38px;line-height: 38px;width:156px;">200</div>
+ <td>
+ <!-- 鏄剧ず琛屽彿 -->
+ <div class="item" style="background: none;color: #000;">#{{index+1}}</div>
+ </td>
+ </tr>
+ </table>
+ </div>
- <div id="site-201" class="site" style="height: 38px;line-height: 38px;width:156px;">201</div>
+ </div>
- <div id="site-202" class="site" style="height: 38px;line-height: 38px;width:156px;">202</div>
- </div>
+ <div class="footer">
+ <!-- 鎬诲紑鍏� -->
+ <div class="line-status">
+ <div class="body-head">鎬诲紑鍏�</div>
+ <div class="switch" @click="systemSwitch">
+ <label id="system-toggle" class="toggle-switch" style="margin-left: 20px;">
+ <input id="system-toggle-checked" disabled type="checkbox">
+ <div class="button">
+ <div class="light"></div>
+ <div class="dots"></div>
+ <div class="characters"></div>
+ <div class="shine"></div>
+ <div class="shadow"></div>
+ </div>
+ </label>
- <!--绗�3鍒�-->
- <div class="site-row site-row-3" id="fool3" style="display: none">
- <div id="site-300" class="site" style="height: 38px;line-height: 38px;width:156px;">300</div>
+ <div class="switch_r">
+ <p>绯荤粺鐘舵��</p>
+ <p id="system-run-desc">绯荤粺杩愯涓�</p>
+ </div>
+ </div>
+ </div>
+ <!-- 鍫嗗灈鏈虹姸鎬� -->
+ <div class="line-status">
+ <div class="body-head">鍫嗗灈鏈虹姸鎬�</div>
+ <div class="shuttle-status-box">
+ <div v-for="(item,idx) in crnList" class="state">
+ <span>鍫嗗灈鏈� {{item.crnNo}}</span>
+ <span v-if="item.crnStatus == 'machine-auto'"
+ class="state-ss machine-auto-flag">鑷姩</span>
+ <span v-else-if="item.crnStatus == 'machine-un-auto'"
+ class="state-ss machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
+ <span v-else-if="item.crnStatus == 'machine-error'"
+ class="state-ss machine-error-flag">寮傚父</span>
+ <span v-else-if="item.crnStatus == 'machine-p-move'"
+ class="state-ss machine-p-move-flag">PToP</span>
+ <span v-else-if="item.crnStatus == 'machine-site-move'"
+ class="state-ss machine-site-move-flag">绔欏埌绔�</span>
+ <span v-else-if="item.crnStatus == 'machine-stock-move'"
+ class="state-ss machine-stock-move-flag">搴撳埌搴�</span>
+ <span v-else-if="item.crnStatus == 'machine-pakout'"
+ class="state-ss machine-take-flag">鍑哄簱</span>
+ <span v-else-if="item.crnStatus == 'machine-pakin'"
+ class="state-ss machine-put-flag">鍏ュ簱</span>
+ <span v-else class="state-ss">{{item.crnStatus}}</span>
+ </div>
+ </div>
+ <div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
+ <div class="allStatus item-group">
+ <span class="machine-put-flag">鍏ュ簱</span>
+ <span class="machine-take-flag">鍑哄簱</span>
+ <span class="machine-stock-move-flag">搴撳埌搴�</span>
+ <span class="machine-site-move-flag">绔欏埌绔�</span>
+ <span class="machine-p-move-flag">PToP</span>
+ <span class="machine-error-flag">寮傚父</span>
+ <span class="machine-auto-flag">鑷姩</span>
+ <span class="machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
+ </div>
+ </div>
+ <!-- 杈撻�佺嚎鐘舵�� -->
+ <div class="line-status">
+ <div class="body-head">杈撻�佺嚎鐘舵��</div>
+ <div class="state states">
+ <span>杩愯緭绾挎�绘暟</span>
+ <span class="line-ss">9</span>
+ </div>
+ <div class="allStatus"><span>鎵�鏈夌姸鎬�</span></div>
+ <div class="allStatus item-group">
+ <span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
+ <span class="site-auto-run">鑷姩+鏈夌墿</span>
+ <span class="site-auto-id">鑷姩+ID</span>
+ <span class="site-auto">鑷姩</span>
+ <span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
+ </div>
+ </div>
+ <!-- 鏉$爜琛ㄦ牸 -->
+ <div class="bar-code">
+ <div class="body-head" id="code">鏉$爜鎵弿鍣�</div>
+ <div class="tablebox">
+ <div class="table-head">
+ <li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
+ </div>
+ <div id="barcode1" class="table-body">
+ <li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
+ </div>
+ </div>
+ <div class="tablebox">
+ <div class="table-head">
+ <li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
+ </div>
+ <div id="barcode2" class="table-body">
+ <li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>
+ </div>
+ </div>
+ </div>
+ </div>
- <div id="site-301" class="site" style="height: 38px;line-height: 38px;width:156px;">301</div>
+ <!-- 杈撻�佽澶囧脊绐� -->
+ <div id="siteWindow" :style="{display:siteWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
+ <!-- 琛ㄥご -->
+ <div id="siteWindow-head">
+ <div class="detailed"></div>
+ <button @click="siteWindow = false"></button>
+ </div>
+ <!-- 琛ㄥ唴瀹� -->
+ <div class="siteWindow-body">
+ <form>
+ <!-- 璁惧鍙� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>璁惧鍙凤細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="siteId" value="">
+ </div>
+ </div>
+ <!-- 宸ヤ綔鍙� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>宸ヤ綔鍙凤細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="workNo" value="">
+ </div>
+ </div>
+ <!-- 宸ヤ綔鐘舵�� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>宸ヤ綔鐘舵�侊細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="wrkSts" value="">
+ </div>
+ </div>
+ <div class="form-item">
+ <!-- 鑷姩 -->
+ <div class="form-item-checkbox">
+ <div class="form-item-label-checkbox">
+ <span>鑷姩</span>
+ </div>
+ <div class="form-item-input-checkbox">
+ <input type="checkbox" name="autoing">
+ </div>
+ </div>
+ <!-- 鏈夌墿 -->
+ <div class="form-item-checkbox">
+ <div class="form-item-label-checkbox">
+ <span>鏈夌墿</span>
+ </div>
+ <div class="form-item-input-checkbox">
+ <input type="checkbox" name="loading">
+ </div>
+ </div>
+ <!-- 鑳藉叆 -->
+ <div class="form-item-checkbox">
+ <div class="form-item-label-checkbox">
+ <span>鑳藉叆</span>
+ </div>
+ <div class="form-item-input-checkbox">
+ <input type="checkbox" name="canining">
+ </div>
+ </div>
+ <!-- 鑳藉嚭 -->
+ <div class="form-item-checkbox">
+ <div class="form-item-label-checkbox">
+ <span>鑳藉嚭</span>
+ </div>
+ <div class="form-item-input-checkbox">
+ <input type="checkbox" name="canouting">
+ </div>
+ </div>
+ </div>
+ <!-- 鍑哄叆绫诲瀷 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鍑哄叆绫诲瀷锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="ioType" value="">
+ </div>
+ </div>
+ <!-- 婧愮珯 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>婧愮珯锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="sourceStaNo" value="">
+ </div>
+ </div>
+ <!-- 鐩爣绔� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鐩爣绔欙細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="staNo" value="">
+ </div>
+ </div>
+ <!-- 婧愬簱浣� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>婧愬簱浣嶏細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="sourceLocNo" value="">
+ </div>
+ </div>
+ <!-- 鐩爣搴撲綅 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鐩爣搴撲綅锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="locNo" value="">
+ </div>
+ </div>
+ </form>
+ </div>
+ </div>
- <div id="site-302" class="site" style="height: 38px;line-height: 38px;width:156px;">302</div>
- </div>
+ <!-- 鍫嗗灈鏈哄脊绐� -->
+ <div id="crnWindow" :style="{display:crnWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
+ <div id="crnWindow-head">
+ <div class='detailed'></div>
+ <button @click="crnWindow = false"></button>
+ </div>
+ <form>
+ <!-- 鍫嗗灈鏈哄彿 -->
+ <div class="form-item">
+ <div class="form-item-label" style>
+ <span>鍫嗗灈鏈哄彿锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="crnNo" value="">
+ </div>
+ </div>
+ <!-- 宸ヤ綔鍙� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>宸ヤ綔鍙凤細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="workNo" value="">
+ </div>
+ </div>
+ <!-- 绔欐簮 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>绔欐簮锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="sourceStaNo" value="">
+ </div>
+ </div>
+ <!-- 鐩爣绔� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鐩爣绔欙細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="staNo" value="">
+ </div>
+ </div>
+ <!-- 宸ヤ綔鐘舵�� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>宸ヤ綔鐘舵�侊細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="wrkSts" value="">
+ </div>
+ </div>
+ <!-- 鍑哄叆绫诲瀷 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鍑哄叆绫诲瀷锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="ioType" value="">
+ </div>
+ </div>
+ <!-- 婧愬簱浣� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>婧愬簱浣嶏細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="sourceLocNo" value="">
+ </div>
+ </div>
+ <!-- 鐩爣搴撲綅 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鐩爣搴撲綅锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="locNo" value="">
+ </div>
+ </div>
+ <!-- 鍫嗗灈鏈虹姸鎬� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鍫嗗灈鏈虹姸鎬侊細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="crnStatus" value="">
+ </div>
+ </div>
+ <!-- 寮傚父 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>寮傚父锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="error" value="">
+ </div>
+ </div>
+ </form>
+ </div>
- <!--妤煎眰鎸夐挳-->
+ <!-- RGV寮圭獥 -->
+ <div id="rgvWindow" :style="{display:rgvWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn">
+ <div id="rgvWindow-head">
+ <div class='detailed'></div>
+ <button @click="rgvWindow = false"></button>
+ </div>
+ <form>
+ <!-- RGV鍙� -->
+ <div class="form-item">
+ <div class="form-item-label" style>
+ <span>RGV鍙凤細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="rgvNo" value="">
+ </div>
+ </div>
+ <!-- 宸ヤ綔鍙� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>宸ヤ綔鍙凤細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="workNo" value="">
+ </div>
+ </div>
+ <!-- 绔欐簮 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>绔欐簮锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="sourceStaNo" value="">
+ </div>
+ </div>
+ <!-- 鐩爣绔� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鐩爣绔欙細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="staNo" value="">
+ </div>
+ </div>
+ <!-- 宸ヤ綔鐘舵�� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>宸ヤ綔鐘舵�侊細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="wrkSts" value="">
+ </div>
+ </div>
+ <!-- 鍑哄叆绫诲瀷 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鍑哄叆绫诲瀷锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="ioType" value="">
+ </div>
+ </div>
+ <!-- 婧愬簱浣� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>婧愬簱浣嶏細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="sourceLocNo" value="">
+ </div>
+ </div>
+ <!-- 鐩爣搴撲綅 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>鐩爣搴撲綅锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="locNo" value="">
+ </div>
+ </div>
+ <!-- RGV鐘舵�� -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>RGV鐘舵�侊細</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="rgvStatus" value="">
+ </div>
+ </div>
+ <!-- 寮傚父 -->
+ <div class="form-item">
+ <div class="form-item-label">
+ <span>寮傚父锛�</span>
+ </div>
+ <div class="form-item-input">
+ <input type="text" name="error" value="">
+ </div>
+ </div>
+ </form>
+ </div>
- <button class="floorBtn btn-16" onclick="changFloor(1)" style="margin-top: 150px">1F</button>
- <button class="floorBtn btn-16" onclick="changFloor(2)" style="margin-top: 200px">2F</button>
- <button class="floorBtn btn-16" onclick="changFloor(3)" style="margin-top: 250px">3F</button>
+ </div>
+ <script>
+ var app = new Vue({
+ el: '#app',
+ data: {
+ map: [],//鍦板浘鏁版嵁
+ siteWindow: false, //绔欑偣寮圭獥鏄剧ず榛樿涓嶆樉绀�
+ crnWindow: false, //鍫嗗灈鏈哄脊绐楁樉绀洪粯璁や笉鏄剧ず
+ rgvWindow: false, //rgv寮圭獥鏄剧ず榛樿涓嶆樉绀�
+ crnList: [], //鍫嗗灈鏈洪泦鍚�
+ liftList: [], //鎻愬崌鏈洪泦鍚�
+ systemStatus: true,//绯荤粺杩愯鐘舵��
+ consoleInterval: null,//瀹氭椂鍣ㄥ瓨鍌ㄥ彉閲�
+ codeList1: [],//鏉$爜List
+ codeList2: [],//鏉$爜List
+ crnInitPosition: [],
+ rgvPosition: [],
+ },
+ created() {
+ this.init()
+ },
+ watch: {
- <!-- 璐ф灦 + 鍫嗗灈鏈� + 鍏ュ簱绔欑偣 -->
- <div class="main-part">
- <!-- 绗竴缁� -->
- <div class="lane" style="margin-bottom: 280px">
- <!-- 璐ф灦 -->
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">1#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">2#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">3#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item" style="border: none;background-color: #6ca7a8"></button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">4#</span>
- </div>
+ },
+ methods: {
+ init() {
+ this.getMap()
+ this.getSystemRunningStatus() //鑾峰彇绯荤粺杩愯鐘舵��
- <!-- 鍫嗗灈鏈� -->
- <div class="crn">
- <hr class="pathway">
- <div id="crn-1" class="machine"></div>
- </div>
+ this.consoleInterval = setInterval(() => {
+ this.getCrnInfo() //鑾峰彇鍫嗗灈鏈烘暟鎹�
+ this.getSiteInfo() //鑾峰彇杈撻�佺珯鐐规暟鎹�
+ this.getRgvInfo() //鑾峰彇RGV鏁版嵁
+ // this.getCodeData()//鑾峰彇鏉$爜
+ }, 1000)
+ },
+ //鑾峰彇鍦板浘鏁版嵁
+ getMap() {
+ let rowPx = 35;
+ let colPx = 35;
- <!-- 璐ф灦 -->
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item">5</button>
- <button class="item">6</button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">5#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item">5</button>
- <button class="item">6</button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">6#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item">5</button>
- <button class="item">6</button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">7#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item">5</button>
- <button class="item">6</button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">8#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item">5</button>
- <button class="item">6</button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">9#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item">5</button>
- <button class="item">6</button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">10#</span>
- </div>
- <div class="stock-group">
- <button class="item">1</button>
- <button class="item">2</button>
- <button class="item">3</button>
- <button class="item">4</button>
- <button class="item">5</button>
- <button class="item">6</button>
- <button class="item">7</button>
- <button class="item">8</button>
- <button class="item">9</button>
- <button class="item">10</button>
- <button class="item">11</button>
- <button class="item">12</button>
- <button class="item">13</button>
- <span class="row-no">11#</span>
- </div>
- </div>
- </div>
- </main>
- <footer class="footer">
- <!-- 鎬诲紑鍏� -->
- <div class="system-state">
- <div class="body-head">鎬诲紑鍏�</div>
- <div class="switch">
- <div id="system-icon" class="system-icon-open" onclick="systemSwitch()"></div>
- <div class="switch_r">
- <p>绯荤粺鐘舵��</p>
- <p id="system-run-desc">绯荤粺杩愯涓�</p>
- </div>
- </div>
- </div>
- <!-- 鍫嗗灈鏈虹姸鎬� -->
- <div class="machine-status">
- <div class="body-head">鍫嗗灈鏈虹姸鎬�</div>
- <div class="state">
- <span>鍫嗗灈鏈� 1</span>
- <span class="state-ss machine-put-flag ">鍏ュ簱</span>
- </div>
-<!-- <div class="state">-->
-<!-- <span>鍫嗗灈鏈� 2</span>-->
-<!-- <span class="state-ss machine-auto-flag ">鑷姩</span>-->
+ $.ajax({
+ url: "./test.json",
+ method: "get",
+ success: (res) => {
+ let data = res.data;
+ let mapData = JSON.parse(data)
+ mapData.forEach((row) => {
+ let shelfIdx = 1;
+ row.forEach((col) => {
+ if (col.type == 'shelf') {
+ col.shelfIdx = shelfIdx;
+ shelfIdx++;
+ }
-<!-- </div>-->
- <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
- <div class="button item-group">
- <span class="machine-put-flag">鍏ュ簱</span>
- <span class="machine-take-flag">鍑哄簱</span>
- <span class="machine-stock-move-flag">搴撳埌搴�</span>
- <span class="machine-site-move-flag">绔欏埌绔�</span>
- <span class="machine-p-move-flag">PToP</span>
- <span class="machine-error-flag">寮傚父</span>
- <span class="machine-auto-flag">鑷姩</span>
- <span class="machine-unauto-flag">闈炶嚜鍔�/鎵嬪姩</span>
- </div>
- </div>
- <!-- 杈撻�佺嚎鐘舵�� -->
- <div class="line-status">
- <div class="body-head">杈撻�佺嚎鐘舵��</div>
- <div class="state states">
- <span>杩愯緭绾挎�绘暟</span>
- <span class="line-ss">9</span>
- </div>
- <div class="button"><span>鎵�鏈夌姸鎬�</span></div>
- <div class="button item-group">
- <span class="site-auto-run-id">鑷姩+鏈夌墿+ID</span>
- <span class="site-auto-run">鑷姩+鏈夌墿</span>
- <span class="site-auto-id">鑷姩+ID</span>
- <span class="site-auto">鑷姩</span>
- <span class="site-unauto">闈炶嚜鍔�/鎵嬪姩</span>
- </div>
- </div>
- <!-- 鏉$爜琛ㄦ牸 -->
- <div class="bar-code">
- <div class="body-head" id="code">鏉$爜鎵弿鍣�</div>
- <div class="tablebox">
- <div class="table-head">
- <li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
- </div>
- <div id="barcode1" class="table-body">
+ col.rowPx = (col.rowSpan * rowPx) + "px";
+ col.colPx = (col.colSpan * colPx) + "px";
- </div>
- </div>
- <div class="tablebox">
- <div class="table-head">
- <li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
- </div>
- <div id="barcode2" class="table-body">
+ col.width = (col.cellWidth / 30) + "px";
+ })
+ })
+ this.map = mapData;
+ }
+ })
+ },
+ openCrn(id) {
+ this.crnWindow = true; //鎵撳紑绔欑偣淇℃伅寮圭獥
+ $(".detailed").empty();
+ $('.detailed').append(id + '鍙峰爢鍨涙満');
+ $.ajax({
+ url: baseUrl + "/console/crn/detail",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ data: {
+ crnNo: id
+ },
+ method: 'post',
+ success: function(res) {
+ for (var val in res.data) {
+ var find = $("#crnWindow").find(":input[name='" + val + "']");
+ if (find[0].type === 'text') {
+ find.val(res.data[val]);
+ } else if (find[0].type === 'checkbox') {
+ find.attr("checked", res.data[val] === 'Y');
+ }
+ }
+ }
+ })
+ },
+ openRgv(id) {
+ this.rgvWindow = true; //鎵撳紑RGV淇℃伅寮圭獥
+ $(".detailed").empty();
+ $('.detailed').append(id + '鍙稲GV');
+ $.ajax({
+ url: baseUrl + "/console/rgv/detail",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ data: {
+ rgvNo: id
+ },
+ method: 'post',
+ success: function(res) {
+ for (var val in res.data) {
+ var find = $("#rgvWindow").find(":input[name='" + val + "']");
+ if (find[0].type === 'text') {
+ find.val(res.data[val]);
+ } else if (find[0].type === 'checkbox') {
+ find.attr("checked", res.data[val] === 'Y');
+ }
+ }
+ }
- </div>
- </div>
- <div class="tablebox">
- <div class="table-head">
- <li><span>鏉$爜鍚嶇О</span><span class="right">鎵爜鏃堕棿</span></li>
- </div>
- <div id="barcode3" class="table-body">
+ })
+ },
+ openSite(id) {
+ this.siteWindow = true; //鎵撳紑绔欑偣淇℃伅寮圭獥
+ $(".detailed").empty();
+ $('.detailed').append(id + '绔欑偣璇︾粏淇℃伅');
+ $.ajax({
+ url: baseUrl + "/console/site/detail",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ data: {
+ siteId: id
+ },
+ method: 'post',
+ success: function(res) {
+ for (var val in res.data) {
+ var find = $("#siteWindow").find(":input[name='" + val + "']");
+ if (find[0].type === 'text') {
+ find.val(res.data[val]);
+ } else if (find[0].type === 'checkbox') {
+ find.attr("checked", res.data[val] === 'Y');
+ }
+ }
+ }
- </div>
- </div>
- </div>
- </footer>
+ })
+ },
+ getSiteInfo() {
+ //鑾峰彇杈撻�佺珯鐐规暟鎹�
+ $.ajax({
+ url: baseUrl + "/console/latest/data/site",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200) {
+ var sites = res.data;
+ for (var i = 0; i < sites.length; i++){
+ var siteEl = $("#site-"+sites[i].siteId);
+ siteEl.attr("class", "site " + sites[i].siteStatus);
+ if (sites[i].workNo != null && sites[i].workNo>0) {
+ siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
+ } else {
+ siteEl.html(sites[i].siteId);
+ }
+ }
+ } else if (res.code === 403) {
+ parent.location.href = baseUrl + "/login";
+ } else {
+ console.log(res.msg);
+ }
+ }
+ });
+ },
+ getCrnInfo() {
+ let that = this
+ //鑾峰彇鍫嗗灈鏈烘暟鎹�
+ $.ajax({
+ url: baseUrl + "/console/latest/data/crn",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200) {
+ var crns = res.data;
- <!-- 鍫嗗灈鏈哄脊绐� -->
- <div id="crnWindow" style="display: none;" class="animate__animated animate__fadeIn">
- <div id="crnWindow-head">
- <div class='detailed'></div>
- <button></button>
- </div>
- <form>
- <!-- 鍫嗗灈鏈哄彿 -->
- <div class="form-item">
- <div class="form-item-label" style>
- <span>鍫嗗灈鏈哄彿锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="crnNo" value="">
- </div>
- </div>
- <!-- 宸ヤ綔鍙� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>宸ヤ綔鍙凤細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="workNo" value="">
- </div>
- </div>
- <!-- 绔欐簮 -->
- <div class="form-item">
- <div class="form-item-label">
- <span>绔欐簮锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="sourceStaNo" value="">
- </div>
- </div>
- <!-- 鐩爣绔� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>鐩爣绔欙細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="staNo" value="">
- </div>
- </div>
- <!-- 宸ヤ綔鐘舵�� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>宸ヤ綔鐘舵�侊細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="wrkSts" value="">
- </div>
- </div>
- <!-- 鍑哄叆绫诲瀷 -->
- <div class="form-item">
- <div class="form-item-label">
- <span>鍑哄叆绫诲瀷锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="ioType" value="">
- </div>
- </div>
- <!-- 婧愬簱浣� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>婧愬簱浣嶏細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="sourceLocNo" value="">
- </div>
- </div>
- <!-- 鐩爣搴撲綅 -->
- <div class="form-item">
- <div class="form-item-label">
- <span>鐩爣搴撲綅锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="locNo" value="">
- </div>
- </div>
- <!-- 鍫嗗灈鏈虹姸鎬� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>鍫嗗灈鏈虹姸鎬侊細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="crnStatus" value="">
- </div>
- </div>
- <!-- 寮傚父 -->
- <div class="form-item">
- <div class="form-item-label">
- <span>寮傚父锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="error" value="">
- </div>
- </div>
- </form>
- </div>
+ if (that.crnInitPosition.length == 0) {
+ let position = []
+ for (var i = 0; i < crns.length; i++) {
+ var crnEl = $("#crn-" + crns[i].crnId);
+ position.push({
+ id: crns[i].crnId,
+ left: crnEl.offset().left + crnEl.width()
+ })
+ }
+ that.crnInitPosition = position
+ return;
+ }
- <!-- 杈撻�佽澶囧脊绐� -->
- <div id="siteWindow" style="display: none;" class="animate__animated animate__fadeIn">
- <!-- 琛ㄥご -->
- <div id="siteWindow-head">
- <div class='detailed'></div>
- <button></button>
- </div>
- <form>
- <!-- 璁惧鍙� -->
- <div class="form-item" >
- <div class="form-item-label">
- <span>璁惧鍙凤細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="siteId" value="">
- </div>
- </div>
- <!-- 宸ヤ綔鍙� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>宸ヤ綔鍙凤細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="workNo" value="">
- </div>
- </div>
- <!-- 宸ヤ綔鐘舵�� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>宸ヤ綔鐘舵�侊細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="wrkSts" value="">
- </div>
- </div>
- <!-- 鑷姩 -->
- <div class="form-item-checkbox">
- <div class="form-item-label-checkbox">
- <span>鑷姩</span>
- </div>
- <div class="form-item-input-checkbox">
- <input type="checkbox" name="autoing">
- </div>
- </div>
- <!-- 鏈夌墿 -->
- <div class="form-item-checkbox">
- <div class="form-item-label-checkbox">
- <span>鏈夌墿</span>
- </div>
- <div class="form-item-input-checkbox">
- <input type="checkbox" name="loading">
- </div>
- </div>
- <!-- 鑳藉叆 -->
- <div class="form-item-checkbox">
- <div class="form-item-label-checkbox">
- <span>鑳藉叆</span>
- </div>
- <div class="form-item-input-checkbox">
- <input type="checkbox" name="canining">
- </div>
- </div>
- <!-- 鑳藉嚭 -->
- <div class="form-item-checkbox">
- <div class="form-item-label-checkbox">
- <span>鑳藉嚭</span>
- </div>
- <div class="form-item-input-checkbox">
- <input type="checkbox" name="canouting">
- </div>
- </div>
- <!-- 鍑哄叆绫诲瀷 -->
- <div class="form-item">
- <div class="form-item-label">
- <span>鍑哄叆绫诲瀷锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="ioType" value="">
- </div>
- </div>
- <!-- 婧愮珯 -->
- <div class="form-item">
- <div class="form-item-label">
- <span>婧愮珯锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="sourceStaNo" value="">
- </div>
- </div>
- <!-- 鐩爣绔� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>鐩爣绔欙細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="staNo" value="">
- </div>
- </div>
- <!-- 婧愬簱浣� -->
- <div class="form-item">
- <div class="form-item-label">
- <span>婧愬簱浣嶏細</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="sourceLocNo" value="">
- </div>
- </div>
- <!-- 鐩爣搴撲綅 -->
- <div class="form-item">
- <div class="form-item-label">
- <span>鐩爣搴撲綅锛�</span>
- </div>
- <div class="form-item-input">
- <input type="text" name="locNo" value="">
- </div>
- </div>
+ let crnList = []
+ for (var i = 0; i < crns.length; i++) {
+ var crnEl = $("#crn-" + crns[i].crnId);
+ crnEl.attr("class", "crn-item " + crns[i].crnStatus);
- </form>
- </div>
-</div>
-</body>
+ if (crns[i].bay < 0 || crns[i].bay === -2) {
+ crns[i].bay = 1
+ }
+
+ let basePosition = 0;
+ that.crnInitPosition.forEach((item) => {
+ if (item.id == crns[i].crnId) {
+ basePosition = item.left
+ }
+ })
+
+ var offSet = crns[i].offset;
+ let finalOffset = basePosition + offSet;
+ if (finalOffset < basePosition) {
+ finalOffset = basePosition;
+ }
+ crnEl.animate({left: finalOffset + 'px'}, 1000);
+
+ crnList.push({
+ crnNo: crns[i].crnId,
+ crnStatus: crns[i].crnStatus
+ })
+ }
+ that.crnList = crnList;
+
+ } else if (res.code === 403) {
+ parent.location.href = baseUrl + "/login";
+ } else {
+ console.log(res.msg);
+ }
+ }
+ });
+ },
+ getRgvInfo() {
+ let that = this
+ //鑾峰彇RGV鏁版嵁
+ $.ajax({
+ url: baseUrl + "/console/latest/data/rgv",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200) {
+ var rgvs = res.data;
+
+ if (that.rgvPosition.length == 0) {
+ let position = []
+ for (var i = 0; i < rgvs.length; i++) {
+ var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+ position.push({
+ id: rgvs[i].rgvId,
+ trackSiteNo: rgvs[i].trackSiteNo,
+ initLeft: rgvEl.offset().left
+ })
+ }
+ that.rgvPosition = position
+ return;
+ }
+
+ for (var i = 0; i < rgvs.length; i++) {
+ var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+ if (rgvs[i].rgvStatus == 'IDLE') {
+ rgvEl.attr("class", "rgv-item");
+ }else if (rgvs[i].rgvStatus == 'WORKING') {
+ rgvEl.attr("class", "rgv-item machine-working");
+ }
+
+ let trackSiteNo = rgvs[i].trackSiteNo;
+ let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo);
+
+ let flag = false;
+ that.rgvPosition.forEach((item) => {
+ if (item.id == rgvs[i].rgvId) {
+ if (item.trackSiteNo != trackSiteNo) {
+ flag = true
+ }
+ }
+ })
+
+ if (flag) {
+ let finalOffset = 0;
+ let targetPosition = trackSiteEl.parent().parent().position().left;
+ let rgvPosition = rgvEl.position().left;
+ let calcResult = targetPosition - rgvPosition
+ if (calcResult > 0) {
+ finalOffset = targetPosition + trackSiteEl.width();
+ }else {
+ finalOffset = targetPosition;
+ }
+
+ rgvEl.animate({left: finalOffset + "px"}, 500);
+
+ let position = []
+ that.rgvPosition.forEach((item) => {
+ if (item.id == rgvs[i].rgvId) {
+ item.trackSiteNo = trackSiteNo
+ }
+ position.push(item)
+ })
+ that.rgvPosition = position
+ }
+
+ }
+ } else if (res.code === 403) {
+ parent.location.href = baseUrl + "/login";
+ } else {
+ console.log(res.msg);
+ }
+ }
+ });
+ },
+ systemSwitch() {
+ // 绯荤粺寮�鍏�
+ let that = this
+ if (this.systemStatus) {
+ this.$prompt('璇疯緭鍏ュ彛浠わ紝骞跺仠姝CS绯荤粺', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ }).then(({
+ value
+ }) => {
+ that.doSwitch(0, value)
+ }).catch(() => {
+
+ });
+ } else {
+ this.doSwitch(1)
+ }
+ },
+ doSwitch(operatorType, password) {
+ let that = this
+ $.ajax({
+ url: baseUrl + "/console/system/switch",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ data: {
+ operatorType: operatorType,
+ password: password
+ },
+ method: 'POST',
+ success: function(res) {
+ if (res.code === 200) {
+ if (res.data.status) {
+ $('#system-toggle-checked').attr("checked", true);
+ $('#system-run-desc').html("绯荤粺杩愯涓�...");
+ that.systemStatus = true;
+ parent.systemRunning = true;
+ } else {
+ $('#system-toggle-checked').attr("checked", false);
+ $('#system-run-desc').html("绯荤粺宸插仠姝�!");
+ that.systemStatus = false;
+ parent.systemRunning = false;
+ }
+ } else if (res.code === 403) {
+ parent.location.href = baseUrl + "/login";
+ } else {
+ that.$message({
+ message: res.msg,
+ type: 'error'
+ });
+ }
+ }
+ });
+ },
+ getSystemRunningStatus() {
+ // 鑾峰彇wcs绯荤粺杩愯鐘舵��
+ let that = this
+ $.ajax({
+ url: baseUrl + "/console/system/running/status",
+ headers: {
+ 'token': localStorage.getItem('token')
+ },
+ method: 'POST',
+ success: function(res) {
+ if (res.code === 200) {
+ if (res.data.status) {
+ $('#system-toggle-checked').attr("checked", true);
+ $('#system-run-desc').html("绯荤粺杩愯涓�...");
+ that.systemStatus = true;
+ parent.systemRunning = true;
+ } else {
+ $('#system-toggle-checked').attr("checked", false);
+ $('#system-run-desc').html("绯荤粺宸插仠姝�!");
+ that.systemStatus = false;
+ parent.systemRunning = false;
+ }
+ } else if (res.code === 403) {
+ parent.location.href = baseUrl + "/login";
+ } else {
+ that.$message({
+ message: res.msg,
+ type: 'error'
+ });
+ }
+ }
+ });
+ },
+ getCodeData(){
+ this.sendWs(JSON.stringify({
+ "url": "/console/barcode/output/site",
+ "data": {}
+ }))
+
+ let that = this
+ //鑾峰彇RGV鏁版嵁
+ $.ajax({
+ url: baseUrl + "/console/barcode/output/site",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200) {
+ var rgvs = res.data;
+
+ if (that.rgvPosition.length == 0) {
+ let position = []
+ for (var i = 0; i < rgvs.length; i++) {
+ var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+ position.push({
+ id: rgvs[i].rgvId,
+ trackSiteNo: rgvs[i].trackSiteNo,
+ initLeft: rgvEl.offset().left
+ })
+ }
+ that.rgvPosition = position
+ return;
+ }
+
+ for (var i = 0; i < rgvs.length; i++) {
+ var rgvEl = $("#rgv-" + rgvs[i].rgvId);
+ if (rgvs[i].rgvStatus == 'IDLE') {
+ rgvEl.attr("class", "rgv-item");
+ }else if (rgvs[i].rgvStatus == 'WORKING') {
+ rgvEl.attr("class", "rgv-item machine-working");
+ }
+
+ let trackSiteNo = rgvs[i].trackSiteNo;
+ let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo);
+
+ let flag = false;
+ that.rgvPosition.forEach((item) => {
+ if (item.id == rgvs[i].rgvId) {
+ if (item.trackSiteNo != trackSiteNo) {
+ flag = true
+ }
+ }
+ })
+
+ if (flag) {
+ let finalOffset = 0;
+ let targetPosition = trackSiteEl.parent().parent().position().left;
+ let rgvPosition = rgvEl.position().left;
+ let calcResult = targetPosition - rgvPosition
+ if (calcResult > 0) {
+ finalOffset = targetPosition + trackSiteEl.width();
+ }else {
+ finalOffset = targetPosition;
+ }
+
+ rgvEl.animate({left: finalOffset + "px"}, 500);
+
+ let position = []
+ that.rgvPosition.forEach((item) => {
+ if (item.id == rgvs[i].rgvId) {
+ item.trackSiteNo = trackSiteNo
+ }
+ position.push(item)
+ })
+ that.rgvPosition = position
+ }
+
+ }
+ } else if (res.code === 403) {
+ parent.location.href = baseUrl + "/login";
+ } else {
+ console.log(res.msg);
+ }
+ }
+ });
+ },
+ setCodeData(res) {
+ if(res.code === 200){
+ let data = JSON.parse(res.data)
+ if (data.length <= 5) {
+ this.codeList1 = data;
+ } else {
+ this.codeList1 = data.slice(0, 5);
+ this.codeList2 = data.splice(5, 10);
+ }
+ }
+ },
+ getDeviceNo(obj) {
+ if (this.isJson(obj)) {
+ let data = JSON.parse(obj)
+ if (data.deviceNo == null || data.deviceNo == undefined) {
+ return -1;
+ }
+ return data.deviceNo;
+ }else {
+ return -1;
+ }
+ },
+ getTrackSiteNo(obj) {
+ if (this.isJson(obj)) {
+ let data = JSON.parse(obj)
+ if (data.trackSiteNo == null || data.trackSiteNo == undefined) {
+ return -1;
+ }
+ return data.trackSiteNo;
+ }else {
+ return -1;
+ }
+ },
+ isJson(str) {
+ try {
+ JSON.parse(str);
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+ }
+ })
+ </script>
+ </body>
</html>
-<script>
- var tData = []
- var tData1 = []
- var tData2 = []
- var tData3 = []
- function getCodeData(){
- $.ajax({
- url:baseUrl +'/console/barcode/output/site',
- method:'GET',
- success:function (res) {
- if(res.code === 200){
- tData = eval(res.data);
- if(tData.length<=5){
- tData1 = tData
- } else if (tData.length<=10){
- tData1 = tData.slice(0,5)
- // tData.splice(0,4)
- tData2 = tData.splice(5,10)
- } else if(tData.length<=15){
- tData1 = tData.slice(0,5)
- tData2 = tData.slice(5,10)
- // tData.splice(0,10)
- tData3 = tData.slice(10,15)
- } else {
- tData1 = tData.slice(0,5)
- tData2 = tData.slice(5,10)
- tData3 = tData.slice(10,15)
- // tData = tData.slice(-15)
- // tData1 = tData.slice(-15)
- // tData2 = tData.slice(-10)
- // tData3 = tData.slice(-5)
-
- }
- }
- }
- })
- }
- setInterval(function () {
- getCodeData();
- renderBarCode();
- }, 1000)
-
-
- function renderBarCode() {
- for (var i = 0;i<tData1.length;i++){
- var str1 = '<li><span>' + tData1[i].barcode + '</span><span class="right">' + tData1[i].time + '</span></li>'
- $('#barcode1').append(str1)
- }
- for(var j = 0;j<tData2.length;j++){
- var str2 = '<li><span>' + tData2[j].barcode + '</span><span class="right">' + tData2[j].time + '</span></li>'
- $('#barcode2').append(str2)
- }
- for(var k = 0;k<tData3.length;k++){
- var str3 = '<li><span>' + tData3[k].barcode + '</span><span class="right">' + tData3[k].time + '</span></li>'
- $('#barcode3').append(str3)
- }
- }
-
- // 灏忚溅鍋忕Щ鍔ㄧ敾
- function carAnimate(id, target) {
- if (id === 1000) {
- let targetTop = 130;
- switch (target) {
- case 110:
- targetTop += 0;
- break;
- case 109:
- targetTop += 60;
- break;
- case 108:
- targetTop += 100;
- break;
- case 107:
- targetTop += 180;
- break;
- case 106:
- targetTop += 220;
- break;
- default:
- return;
- }
- $("#site-" + id).animate({top: targetTop+'px'}, 1000);
- } else if (id === 2000) {
- let targetTop = 130;
- switch (target) {
- case 226:
- targetTop += 0;
- break;
- case 225:
- targetTop += 60;
- break;
- case 224:
- targetTop += 100;
- break;
- case 223:
- targetTop += 180;
- break;
- case 222:
- targetTop += 220;
- break;
- case 214:
- targetTop += 280;
- break;
- case 220:
- targetTop += 320;
- break;
- default:
- return;
- }
- $("#site-" + id).animate({top: targetTop+'px'}, 1000);
- }
- }
-</script>
-<script type="text/javascript">
- // 寮圭獥绔欑偣淇℃伅
- $('.site').on('click',function(){
- var id = this.id.split("-")[1];
- $("#siteWindow").attr("style","display:block;");//鏄剧ずdiv
- $("#crnWindow").attr("style","display:none;");
- $(".detailed").empty();
- $('.detailed').append(id+'绔欑偣璇︾粏淇℃伅');
- $.ajax({
- url:baseUrl+"/console/site/detail",
- headers:{
- 'token': localStorage.getItem('token')
- },
- data:{
- siteId: id
- },
- method:'post',
- success:function (res) {
- for (var val in res.data) {
- var find = $("#siteWindow").find(":input[name='" + val + "']");
- if (find[0].type==='text') {
- find.val(res.data[val]);
- } else if (find[0].type === 'checkbox') {
- find.attr("checked", res.data[val] === 'Y');
- }
- }
- }
-
- })
-
- });
- // 鍫嗗灈鏈轰俊鎭�
- $('.machine').on('click',function(){
- var id = this.id.split("-")[1];
- $("#crnWindow").attr('style','display:block;');
- $("#siteWindow").attr("style","display:none;");
- $('.detailed').empty();
- $('.detailed').append(id+'鍙峰爢鍨涙満');
- $.ajax({
- url:baseUrl+"/console/crn/detail",
- headers:{
- 'token': localStorage.getItem('token')
- },
- data:{
- crnNo: id
- },
- method:'post',
- success:function (res) {
- for (var val in res.data) {
- var find = $("#crnWindow").find(":input[name='" + val + "']");
- if (find[0].type==='text') {
- find.val(res.data[val]);
- } else if (find[0].type === 'checkbox') {
- find.attr("checked", res.data[val] === 'Y');
- }
- }
- }
-
- })
-
- })
- // 寮圭獥鍏抽棴
- $('button').on('click',function(){
- $('#siteWindow').attr('style','display:none')
- $('#crnWindow').attr('style','display:none')
- })
-
-
-
- var crn1Position = 0;
- var crn2Position = 0;
- var crn3Position = 0;
- var crn4Position = 0;
- var crn5Position = 0;
-
- // 鍒濆鍖�
- getSitesInfo();
- getCrnInfo();
- getSystemRunningStatus();
- getBarcodeInfo();
- getScaleInfo();
- // 瀹炴椂璁块棶
- setInterval(function () {
- getCrnInfo();
- getSystemRunningStatus();
- getBarcodeInfo();
- getScaleInfo();
- }, 1000);
- setInterval(function () {
- getSitesInfo();
- }, 3000);
-
- // 绯荤粺杩愯寮�鍏�
- function systemSwitch() {
- if (parent.systemRunning){
- layer.prompt({title: '璇疯緭鍏ュ彛浠わ紝骞跺仠姝� WCS 绯荤粺', formType: 1, shadeClose: true}, function(pass, idx){
- layer.close(idx);
- doSwitch(0, pass); // 鍋滄wcs绯荤粺
- });
- } else {
- doSwitch(1); // 鍚姩wcs绯荤粺
- }
- }
-
- // 璇锋眰鏈嶅姟鍣ㄦ帶鍒秝cs绯荤粺杩愯鐘舵��
- function doSwitch(operatorType, password) {
- // 鍔犺浇tips
- var index = layer.load(1, {
- shade: [0.1,'#fff']
- });
- $.ajax({
- url: baseUrl+ "/console/system/switch",
- headers: {'token': localStorage.getItem('token')},
- // async: false,
- data: {
- operatorType: operatorType,
- password: password
- },
- method: 'POST',
- success: function (res) {
- layer.close(index);
- if (res.code === 200){
- if (res.data.status) {
- $('#system-icon').attr("class", "system-icon-open");
- $('#system-run-desc').html("绯荤粺杩愯涓�...");
- parent.systemRunning = true;
- } else {
- $('#system-icon').attr("class", "system-icon-close");
- $('#system-run-desc').html("绯荤粺宸插仠姝�!");
- parent.systemRunning = false;
- }
- } else if (res.code === 403){
- parent.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
-
- }
- }
- });
-
- }
-
- // 鑾峰彇wcs绯荤粺杩愯鐘舵��
- function getSystemRunningStatus() {
- $.ajax({
- url: baseUrl+ "/console/system/running/status",
- headers: {'token': localStorage.getItem('token')},
- method: 'POST',
- success: function (res) {
- if (res.code === 200){
- if (res.data.status) {
- $('#system-icon').attr("class", "system-icon-open");
- $('#system-run-desc').html("绯荤粺杩愯涓�...");
- parent.systemRunning = true;
- } else {
- $('#system-icon').attr("class", "system-icon-close");
- $('#system-run-desc').html("绯荤粺宸插仠姝�!");
- parent.systemRunning = false;
- }
- } else if (res.code === 403){
- parent.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
- }
- }
- });
- }
-
- // 杈撻�佽澶囧疄鏃舵暟鎹幏鍙�
- function getSitesInfo(){
- $.ajax({
- url: baseUrl+ "/console/latest/data/site",
- headers: {'token': localStorage.getItem('token')},
- method: 'POST',
- success: function (res) {
- if (res.code === 200){
- var sites = res.data;
- for (var i = 0; i < sites.length; i++){
- var siteEl = $("#site-"+sites[i].siteId);
- siteEl.attr("class", "site " + sites[i].siteStatus);
- if (sites[i].workNo != null && sites[i].workNo>0) {
- siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]");
- } else {
- siteEl.html(sites[i].siteId);
- }
- if (i+1===8) {
- carAnimate(i+1, Number(sites[i].nearbySta));
- }
- }
- } else if (res.code === 403){
- parent.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
- }
- }
- });
- }
-
- // 鍫嗗灈鏈哄疄鏃舵暟鎹幏鍙�
- function getCrnInfo(){
- $.ajax({
- url: baseUrl+ "/console/latest/data/crn",
- headers: {'token': localStorage.getItem('token')},
- method: 'POST',
- success: function (res) {
- if (res.code === 200){
- var crns = res.data;
- for (var i = 0; i < crns.length; i++){
- var crnEl = $("#crn-"+crns[i].crnId);
- crnEl.attr("class", "machine " + crns[i].crnStatus);
- var unit = ($('.item').eq(0).width()+4)/2;
- crnEl.animate({left: (crns[i].bay * unit + 25) +'px'}, 1000);
- }
- } else if (res.code === 403){
- parent.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
- }
- }
- });
- }
-
- // 鎵爜鍣ㄥ疄鏃舵暟鎹幏鍙�
- function getBarcodeInfo(){
- $.ajax({
- url: baseUrl+ "/console/latest/data/barcode",
- headers: {'token': localStorage.getItem('token')},
- method: 'POST',
- success: function (res) {
- if (res.code === 200){
- var barcodes = res.data;
- for (var i = 0; i < barcodes.length; i++){
- $("#code-decoder-data-"+barcodes[i].barcodeId).html(barcodes[i].codeValue);
- }
- } else if (res.code === 403){
- parent.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
- }
- }
- });
- }
-
- // 纾呯Г瀹炴椂鏁版嵁鑾峰彇
- function getScaleInfo(){
- $.ajax({
- url: baseUrl+ "/console/latest/data/scale",
- headers: {'token': localStorage.getItem('token')},
- method: 'POST',
- success: function (res) {
-
- if (res.code === 200){
- var sclaes = res.data;
- for (var i = 0; i < sclaes.length; i++){
- console.log(sclaes[i].scaleId + ":" + sclaes[i].value)
- $("#scale-data-"+sclaes[i].scaleId).text(sclaes[i].value);
- }
- } else if (res.code === 403){
- parent.location.href = baseUrl+"/login";
- } else {
- console.log(res.msg);
- }
- }
- });
- }
-
- // 鍫嗗灈鏈哄亸绉诲姩鐢�
- function crnAnimate(id, leftVal) {
- switch (id) {
- case 1:
- $("#crn-1").animate({left: leftVal+'px'}, 1000);
- crn1Position = leftVal;
- break;
- case 2:
- $("#crn-2").animate({left: leftVal+'px'}, 1000);
- crn2Position = leftVal;
- break;
- case 3:
- $("#crn-3").animate({left: leftVal+'px'}, 1000);
- crn3Position = leftVal;
- break;
- case 4:
- $("#crn-4").animate({left: leftVal+'px'}, 1000);
- crn4Position = leftVal;
- break;
- case 5:
- $("#crn-5").animate({left: leftVal+'px'}, 1000);
- crn5Position = leftVal;
- break;
- default:
- break
- }
- }
-
- // 椤甸潰鐐瑰嚮浜嬩欢鐩戝惉 ---------------------------------------------------------
-
- // 杈撻�佽澶囩偣鍑讳簨浠�
- // $('.site').on('click', function () {
- // var id = this.id.split("-")[1];
- // if (id === undefined) {
- // return;
- // }
- // layer.open({
- // title: id + " 绔欑偣淇℃伅璇︽儏",
- // closeBtn: 0,
- // skin: 'layui-layer-lan',
- // offset: '180px',
- // type: 1,
- // shadeClose: true,
- // content: $('#siteWindow'),
- // area: ['35rem', '18rem'],
- // btn: ['纭畾', '鍏抽棴'],
- // success: function(layero, index){
- // http.post(baseUrl+"/console/site/detail", {siteId: id}, function (res) {
- // for (var val in res.data) {
- // var find = $("#siteWindow").find(":input[name='" + val + "']");
- // if (find[0].type==='text') {
- // find.val(res.data[val]);
- // } else if (find[0].type === 'checkbox') {
- // find.attr("checked", res.data[val] === 'Y');
- // }
- // }
- // })
- // },
- // end: function () {
- // $(':input', $("#siteWindow")).val('').removeAttr('checked').removeAttr('selected');
- // }
- // });
- // });
-
- // 鍫嗗灈鏈虹偣鍑讳簨浠�
- // $('.machine').on('click', function () {
- // var id = this.id.split("-")[1];
- // layer.open({
- // title: id+"鍙峰爢鍨涙満",
- // skin: 'layui-layer-lan',
- // closeBtn: 0,
- // type: 1,
- // offset: '150px',
- // shadeClose: true,
- // content: $("#crnWindow"),
- // area: ['40rem', '20rem'],
- // btn: ['纭畾', '鍏抽棴'],
- // success: function(layero, index){
- // http.post(baseUrl+"/console/crn/detail", {crnNo: id}, function (res) {
- // for (var val in res.data) {
- // var find = $("#crnWindow").find(":input[name='" + val + "']");
- // if (find[0].type==='text') {
- // find.val(res.data[val]);
- // } else if (find[0].type === 'checkbox') {
- // find.attr("checked", res.data[val] === 'Y');
- // }
- // }
- // })
- // },
- // end: function () {
- // $(':input', $("#crnWindow")).val('').removeAttr('checked').removeAttr('selected');
- // }
- // });
- // });
-
-
- // 灏忚溅鍋忕Щ鍔ㄧ敾
- function carAnimate(id, target) {
- var targetTop = 122;
- if (id === 8) {
- switch (target) {
- case 1:
- targetTop += 160;
- break;
- case 2:
- targetTop += 140;
- break;
- case 3:
- targetTop += 80;
- break;
- case 4:
- targetTop += 40;
- break;
- case 7:
- targetTop += 0;
- break;
- default:
- return;
- }
- } else {
- return;
- }
- $("#site-" + id).animate({top: targetTop+'px'}, 1000);
- }
-
-
- //妤煎眰鍒囨崲鎸夐挳
- function changFloor(x) {
- switch (x) {
- case 1:
- $('#fool1').css("display","block")
- $('#fool2').css("display","none")
- $('#fool3').css("display","none")
- return
- case 2:
- $('#fool1').css("display","none")
- $('#fool2').css("display","block")
- $('#fool3').css("display","none")
- return
- case 3:
- $('#fool1').css("display","none")
- $('#fool2').css("display","none")
- $('#fool3').css("display","block")
- return
- default:
- return;
-
- }
- }
-
-</script>
--
Gitblit v1.9.1