From 8212b1177f0191332e6c398306310b0ffe73d484 Mon Sep 17 00:00:00 2001
From: cpT <1@123>
Date: 星期六, 28 六月 2025 16:50:43 +0800
Subject: [PATCH] #改造

---
 src/main/webapp/views/deviceOperate/wcsOperate.html |  678 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 678 insertions(+), 0 deletions(-)

diff --git a/src/main/webapp/views/deviceOperate/wcsOperate.html b/src/main/webapp/views/deviceOperate/wcsOperate.html
new file mode 100644
index 0000000..b5ee71f
--- /dev/null
+++ b/src/main/webapp/views/deviceOperate/wcsOperate.html
@@ -0,0 +1,678 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="utf-8">
+	<title>鐜舰绌挎杞︽櫤鑳界郴缁�</title>
+	<link rel="stylesheet" href="../../static/wcs/css/element.css">
+	<script type="text/javascript" src="../../static/wcs/js/jquery/jquery-3.3.1.min.js"></script>
+	<script type="text/javascript" src="../../static/wcs/js/common.js"></script>
+	<script type="text/javascript" src="../../static/wcs/js/vue.min.js"></script>
+	<script type="text/javascript" src="../../static/wcs/js/element.js"></script>
+	<style>
+		body {
+			font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
+			margin: 0;
+			padding: 0;
+			background-color: #a0d2eb;
+			color: #ffffff;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 100vh;
+		}
+		header {
+			background-color: #2196F3;
+			color: white;
+			padding: 15px 20px;
+			text-align: center;
+			font-size: 24px;
+			letter-spacing: 1px;
+			box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
+		}
+		.map {
+			position: relative;
+			width: 52vw;
+			height: 80vh;
+			border-radius: 50%;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+		}
+		.inner-ring, .outer-ring {
+			position: absolute;
+			border-radius: 50%;
+		}
+		.inner-ring {
+			width: 72vh;
+			height: 72vh;
+			border: 4px solid #00E676;
+			box-shadow: inset 0 0 30px rgba(0, 230, 118, 0.5), 0 0 20px rgba(0, 230, 118, 0.5);
+		}
+		.outer-ring {
+			width: 80vh;
+			height: 80vh;
+			border: 4px solid #00E676;
+			box-shadow: inset 0 0 30px rgba(0, 230, 118, 0.5), 0 0 20px rgba(0, 230, 118, 0.5);
+		}
+		.station {
+			position: absolute;
+			width: 20px;
+			height: 14px;
+			text-align: center;
+			line-height: 1.5; /* 璋冩暣琛岄珮涓庡瓧浣撳ぇ灏忕殑姣斿�� */
+			font-size: 10px; /* 璁剧疆鏇村皬鐨勫瓧浣� */
+			font-weight: bold;
+			transition: transform 0.3s ease;
+			background-color: #ab1839;
+			transform: scale(1); /* 鍙�夛細濡傛灉涓嶉渶瑕佹斁澶ф晥鏋� */
+		}
+		.bus {
+			font-size: 10px;
+			background-color: #2196F3;
+			border: 10px solid #ffffff;
+			position: absolute;
+			width: 15px;
+			height: 15px;
+			border-radius: 50%;
+			text-align: center;
+			line-height: 15px;
+			font-weight: bold;
+			transition: transform 0.3s ease;
+		}
+		.station:hover, .bus:hover {
+			transform: scale(1.4);
+			z-index: 999;
+		}
+
+		.task-bar-left {
+			position: fixed;
+			top: 1%;
+			/*transform: translateY(-50%);*/
+			width: 25%; /* 璁剧疆瀹藉害 */
+			background-color: rgba(255, 255, 255, 0); /* 鍗婇�忔槑鑳屾櫙 */
+
+			border-radius: 5px;
+			padding: 10px;
+			box-shadow: 0 0 10px rgba(0, 0, 0, 0);
+			z-index: 1000; /* 纭繚鍦ㄥ叾浠栧厓绱犱箣涓� */
+		}
+
+		.task-bar-left1 {
+			position: fixed;
+			top: 8%;
+			/*transform: translateY(-50%);*/
+			width: 25%; /* 璁剧疆瀹藉害 */
+			background-color: rgba(255, 255, 255, 0); /* 鍗婇�忔槑鑳屾櫙 */
+
+			border-radius: 5px;
+			padding: 10px;
+			box-shadow: 0 0 10px rgba(0, 0, 0, 0);
+			z-index: 1000; /* 纭繚鍦ㄥ叾浠栧厓绱犱箣涓� */
+		}
+
+		.task-bar-right {
+			position: fixed;
+			top: 1%;
+			/*transform: translateY(-50%);*/
+			width: 25%; /* 璁剧疆瀹藉害 */
+			background-color: rgba(255, 255, 255, 0); /* 鍗婇�忔槑鑳屾櫙 */
+
+			border-radius: 5px;
+			padding: 10px;
+			box-shadow: 0 0 10px rgba(0, 0, 0, 0);
+			z-index: 1000; /* 纭繚鍦ㄥ叾浠栧厓绱犱箣涓� */
+		}
+
+		.task-bar-right1 {
+			position: fixed;
+			top: 5%;
+			/*transform: translateY(-50%);*/
+			width: 25%; /* 璁剧疆瀹藉害 */
+			background-color: rgba(255, 255, 255, 0); /* 鍗婇�忔槑鑳屾櫙 */
+
+			border-radius: 5px;
+			padding: 10px;
+			box-shadow: 0 0 10px rgba(0, 0, 0, 0);
+			z-index: 1000; /* 纭繚鍦ㄥ叾浠栧厓绱犱箣涓� */
+		}
+
+		.task-bar-div1 {
+			/*width: 100%; !* 璁剧疆瀹藉害 *!*/
+			background-color: rgba(255, 255, 255, 0.8); /* 鍗婇�忔槑鑳屾櫙 */
+			box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
+		}
+
+		.left-task-bar {
+			left: 20px; /* 璺濈宸﹁竟鐨勮窛绂� */
+			/*bottom: 100px;*/
+		}
+
+		.right-task-bar {
+			/*bottom: 100px;*/
+			right: 20px; /* 璺濈鍙宠竟鐨勮窛绂� */
+		}
+
+		.el-table .warning-row {
+			background: oldlace;
+		}
+
+		.el-table .success-row {
+			background: #f0f9eb;
+		}
+		.container {
+			width: 100vh;
+			height: 72vh;
+			position: absolute;
+			/*background: #8c939d;*/
+		}
+		.bus-station {
+			width: 100vh;
+			height: 72vh;
+			position: absolute;
+			display: flex;
+			/*background: #8c939d;*/
+		}
+		.bus-item-top {
+			background: red;
+			position: relative;
+			width: 40px;
+			height: 60px;
+			line-height: 60px;
+			top: 880px;
+			text-align: center;
+		}
+		.bus-item-left {
+			background: red;
+			position: relative;
+			width: 60px;
+			height: 40px;
+			line-height: 40px;
+			left: 1230px;
+			text-align: center;
+		}
+		.bus-item-left2 {
+			background: red;
+			position: relative;
+			width: 60px;
+			height: 40px;
+			line-height: 40px;
+			left: 1000px;
+			text-align: center;
+		}
+	</style>
+</head>
+<body>
+<!--<header>-->
+<!--    鐜舰绌挎杞︽櫤鑳界郴缁�-->
+<!--</header>-->
+<div id="app">
+	<div  class="map">
+		<div v-if="licenseDayI <=30 ">
+			<div style="color: red">{{licenseDay}}</div>
+		</div>
+		<svg class="container">
+			<path d="M 1200,750
+                        L 1200,100
+                        C 1200,100 1200,50 1150,50
+                        C 1150,50 1100,50 1100,100
+                        L 1100,700
+                        C 1100,700 1100,750 1050,750
+                        L 60,750
+                        C 60,750 10,750 10,800
+                        C 10,800 10,850 60,850
+                        L 1100,850
+                        C 1100,850 1200,850 1200,750
+"
+				  style="fill:none; stroke:blue; stroke-width:4;" />
+		</svg>
+		<div v-for="station in tableDataDev" class="station" :style="{ top: station.valueY + 'px', left: station.valueX + 'px' }">{{ station.index }}</div>
+		<div>
+			<el-switch
+					style="display: block"
+					v-model="valueSystem"
+					active-color="#13ce66"
+					inactive-color="#A64036"
+					active-text="绯荤粺杩愯涓�..."
+					inactive-text="绯荤粺宸插仠姝�!"
+					@change='upDateValueSystem'>
+			</el-switch>
+		</div>
+		<div v-for="bus in tableDataRgv" class="bus" :style="{ top: bus.valueY + 'px', left: bus.valueX + 'px' , borderColor: bus.modeColor, backgroundColor: bus.statusColor}">{{ bus.index }}</div>
+	</div>
+</div>
+
+<script>
+	var app = new Vue({
+		el: '#app',
+		data: {
+			activeNames: ['1'],
+			valueLeft: '0',
+			valueLeft1: '0',
+			valueRight: '0',
+			valueRight1: '0',
+			licenseDay: '宸茶繃鏈�',
+			licenseDayI: 100,
+			valueSystem: false,
+			tableDataRgv: [],
+			tableDataDev: [],
+			energyGatheringRing: [],
+			tableDataLeft: [],
+			tableDataLeft1: [],
+			tableDataRight: [],
+			tableDataRight1: [],
+			devpPos1:[
+				{dev_no: 116,pos:633980},
+				{dev_no: 117,pos:604043},
+				{dev_no: 118,pos:574323},
+				{dev_no: 119,pos:559534},
+				{dev_no: 120,pos:544682},
+				{dev_no: 121,pos:514912},
+				{dev_no: 122,pos:485227},
+				{dev_no: 123,pos:470367},
+				{dev_no: 124,pos:455514},
+				{dev_no: 125,pos:425768},
+				{dev_no: 126,pos:396268},
+				{dev_no: 127,pos:381106},
+				{dev_no: 128,pos:366311},
+				{dev_no: 129,pos:336638},
+				{dev_no: 130,pos:306820},
+				{dev_no: 131,pos:277067},
+				{dev_no: 132,pos:257418},
+				{dev_no: 133,pos:217730},
+			],
+			devpPos2:[
+				{dev_no: 112,pos:891000},
+				{dev_no: 113,pos:865000},
+				{dev_no: 114,pos:800000},
+				{dev_no: 115,pos:780000},
+			],
+			devpPos3:[
+				{dev_no: 101,pos:1269958},
+				{dev_no: 102,pos:1243454},
+				{dev_no: 103,pos:1229081},
+				{dev_no: 104,pos:1202099},
+				{dev_no: 105,pos:1187564},
+				{dev_no: 106,pos:1160630},
+				{dev_no: 107,pos:1146152},
+				{dev_no: 108,pos:1119463},
+				{dev_no: 109,pos:1105038},
+				{dev_no: 110,pos:1077961},
+				{dev_no: 111,pos:1063813},
+			],
+		},
+		created(){
+			this.init();
+			this.devpPos1.reverse()
+			this.devpPos3.reverse()
+		},
+		watch: {
+
+		},
+		methods: {
+			init(){
+				this.getTableDataRgv()
+				this.getTableDataDev()
+				this.getTableDataTrack()
+				this.getTableDataLeft()
+				this.getTableDataLeft1()
+				this.getTableDataRight()
+				this.getTableDataRight1()
+				this.getValueSystem()
+				this.getLicenseDays()
+
+				setInterval(() => {
+					this.getTableDataRgv()
+					this.getTableDataDev()
+					this.getTableDataTrack()
+					this.getTableDataLeft()
+					this.getTableDataLeft1()
+					this.getTableDataRight()
+					this.getTableDataRight1()
+					this.getValueSystem()
+					this.getLicenseDays()
+
+				}, 1000)
+			},
+
+			verifyPassword(callback) {
+				this.$prompt('璇疯緭鍏ョ鐞嗗憳瀵嗙爜: root', '楠岃瘉', {
+					confirmButtonText: '纭畾',
+					cancelButtonText: '鍙栨秷',
+					inputType: 'password',
+					inputPattern: /^root$/,
+					inputErrorMessage: '瀵嗙爜閿欒'
+				}).then(({ value }) => {
+					if (value === 'root') {
+						callback();
+					}
+				}).catch(() => {
+					this.$message.info('宸插彇娑堟搷浣�');
+				});
+			},
+			handleChange(val) {
+				console.log(val);
+				if (val.length === 0){
+					valueRight = '0';
+				} else {
+					console.log("2222"+val);
+
+					if (val.length >= 1){
+						this.handleChangeValueRight(1)
+					}
+				}
+			},
+			handleChange1(val) {
+				console.log(val);
+				if (val.length === 0){
+					valueRight1 = '0';
+				} else {
+					console.log("2222"+val);
+
+					if (val.length >= 1){
+						this.handleChangeValueRight1(1)
+					}
+				}
+			},
+			taskDelete(row) {
+				let that = this;
+				that.$confirm('纭瑕佸垹闄よ浠诲姟鍚�?', '鎻愮ず', {
+					confirmButtonText: '纭畾',
+					cancelButtonText: '鍙栨秷',
+					type: 'warning'
+				}).then(() => {
+					$.ajax({
+						url: baseUrl + "/rgv/disable/task/delete",
+						headers: {'token': localStorage.getItem('token')},
+						method: 'POST',
+						data: {
+							wrkNo: row.wrkNo
+						},
+						success: function (res) {
+							if (res.code === 200) {
+								that.$message.success('鍒犻櫎鎴愬姛');
+								// 鍒犻櫎褰撳墠琛�
+								that.tableDataRight.splice(that.tableDataRight.indexOf(row), 1);
+							} else {
+								that.$message.error('鍒犻櫎澶辫触');
+							}
+						}
+					});
+				});
+			},
+			taskDelete1(row) {
+				let that = this;
+				that.$confirm('纭瑕佸垵濮嬪寲璇ヤ换鍔″悧?', '鎻愮ず', {
+					confirmButtonText: '纭畾',
+					cancelButtonText: '鍙栨秷',
+					type: 'warning'
+				}).then(() => {
+					$.ajax({
+						url: baseUrl + "/rgv/disable/task/delete1",
+						headers: {'token': localStorage.getItem('token')},
+						method: 'POST',
+						data: {
+							wrkNo: row.wrkNo
+						},
+						success: function (res) {
+							if (res.code === 200) {
+								that.$message.success('鍒濆鍖栨垚鍔�');
+								// 鍒犻櫎褰撳墠琛�
+								// that.tableDataRight.splice(that.tableDataRight.indexOf(row), 1);
+							} else {
+								that.$message.error('鍒濆鍖栧け璐�');
+							}
+						}
+					});
+				});
+			},
+			toggleStatus(index, row) {
+				let that = this;
+				const currentStatus = row.status;
+				const targetStatus = currentStatus === 0 ? 1 : 0;
+
+				that.$confirm(`纭瑕�${currentStatus === 0 ? '绂佺敤' : '鍚敤'}璇ヨ澶囧悧?`, '鎻愮ず', {
+					confirmButtonText: '纭畾',
+					cancelButtonText: '鍙栨秷',
+					type: 'warning'
+				}).then(() => {
+					$.ajax({
+						url: baseUrl + "/rgv/disable/rgv/status",
+						headers: {'token': localStorage.getItem('token')},
+						method: 'POST',
+						data: {
+							rgvNo: row.rgvNo,
+							status: targetStatus
+						},
+						success: function (res) {
+							if (res.code === 200) {
+								that.$message.success(`鐘舵�佹洿鏂版垚鍔焋);
+								row.status$ = targetStatus; // 鏇存柊鍓嶇鐘舵��
+							} else {
+								that.$message.error('鐘舵�佹洿鏂板け璐�');
+							}
+						}
+					});
+				});
+			},
+			handleChangeValueRight(val) {
+				console.log("33333"+val);
+
+				switch (val){
+					case 1:
+						valueRight = '100';
+					case 2:
+						valueRight = '100';
+					case 3:
+						valueRight = '100';
+					case 4:
+						valueRight = '100';
+					default:
+						valueRight = '0';
+				}
+			},
+			handleChangeValueRight1(val) {
+				console.log("33333"+val);
+
+				switch (val){
+					case 1:
+						valueRight1 = '100';
+					case 2:
+						valueRight1 = '100';
+					case 3:
+						valueRight1 = '100';
+					case 4:
+						valueRight1 = '100';
+					default:
+						valueRight1 = '0';
+				}
+			},
+			tableRowClassName({row, rowIndex}) {
+				if (rowIndex === 1) {
+					return 'warning-row';
+				} else if (rowIndex === 3) {
+					return 'success-row';
+				}
+				return '';
+			},
+			getLicenseDays(){
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/license/getLicenseDays",
+					headers: {'token': localStorage.getItem('token')},
+					method: 'POST',
+					success: function (res) {
+						if (res.code == 200) {
+							if (res.data.day<0){
+								that.licenseDay = "宸茶繃鏈�"+res.data.day+"澶�";
+								that.licenseDayI = -1;
+							} else {
+								that.licenseDay = "璁稿彲璇佹湁鏁堟湡"+res.data.day+"澶�";
+								that.licenseDayI = res.data.day;
+							}
+						}else {
+							that.licenseDay = "宸茶繃鏈�";
+							that.licenseDayI = -1;
+						}
+					}
+				});
+				// setTimeout(function() {
+				//
+				// }, 1000);
+			},
+			getValueSystem() {
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/console/system/running/status",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.valueSystem = res.data.status
+					}
+				});
+			},
+			upDateValueSystem(){
+				let that = this;
+				let operatorTypeI = 0;
+				if (that.valueSystem){
+					operatorTypeI = 1;
+				}
+				this.verifyPassword(() => {
+					$.ajax({
+						url: baseUrl + "/console/system/switch",
+						headers: {'token': localStorage.getItem('token')},
+						data: {operatorType : operatorTypeI},
+						method: 'POST',
+						success: function (res) {
+							if (res.code === 200) {
+								that.valueSystem = res.data.status;
+							}
+						}
+					});
+				});
+			},
+			getTableDataLeft() {
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/rgv/ring/through/task/wrk/mast/position/data",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.tableDataLeft = res.data
+					}
+				});
+			},
+			getTableDataLeft1() {
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/rgv/ring/through/task/wrk/mast/position/data/v1",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.tableDataLeft1 = res.data
+					}
+				});
+			},
+			getTableDataRight() {
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/rgv/task/rgv/circular/shuttle/mast/position/data",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.tableDataRight = res.data
+					}
+				});
+			},
+			getTableDataRight1() {
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/rgv/task/rgv/circular/shuttle/mast/position/data/v1",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.tableDataRight1 = res.data
+					}
+				});
+			},
+			getTableDataRgv() {
+				let that = this;
+				// that.tableDataRgv = busPsto
+				// return
+				$.ajax({
+					url: baseUrl + "/rgv/ring/through/rgv/position/data",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.tableDataRgv = res.data
+					}
+				});
+			},
+			getTableDataDev() {
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/rgv/ring/through/dev/position/data",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.tableDataDev = res.data
+					}
+				});
+			},
+			getTableDataTrack() {
+				let that = this;
+				$.ajax({
+					url: baseUrl + "/rgv/ring/through/track/position/data",
+					headers: {
+						'token': localStorage.getItem('token')
+					},
+					data: {},
+					dataType: 'json',
+					contentType: 'application/json;charset=UTF-8',
+					method: 'post',
+					success: function (res) {
+						that.energyGatheringRing = res.data
+					}
+				});
+			}
+		}
+	})
+
+</script>
+</body>
+
+</html>

--
Gitblit v1.9.1