From 8b0d749cfbec8bf0afe71a8956bfeeed6f27cdfc Mon Sep 17 00:00:00 2001
From: chengsc <11752@DESKTOP-DS49RCP>
Date: 星期四, 16 一月 2025 15:32:30 +0800
Subject: [PATCH] Merge branch 'csc'

---
 Web/src/views/device/deviceInfo/index.vue |  367 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 348 insertions(+), 19 deletions(-)

diff --git a/Web/src/views/device/deviceInfo/index.vue b/Web/src/views/device/deviceInfo/index.vue
index e6526f7..3dd560a 100644
--- a/Web/src/views/device/deviceInfo/index.vue
+++ b/Web/src/views/device/deviceInfo/index.vue
@@ -20,6 +20,18 @@
 							<el-switch v-model="state.boDemo" active-text="" inactive-text="婕旂ず妯″紡"
 								@change="handleSwitchChange('boDemo', $event)"></el-switch>
 						</el-card>
+						<el-card class="box-card" shadow="hover" style="margin-top: 3px;">
+							<el-switch v-model="state.boDrumReversal" active-text="" inactive-text="婊氬姩鍙嶈浆"
+								@change="handleSwitchChange('boDrumReversal', $event)"></el-switch>
+						</el-card>
+						<el-card class="box-card" shadow="hover" style="margin-top: 3px;">
+							<el-switch v-model="state.boOutLock" active-text="" inactive-text="鍑哄簱閿佸畾"
+								@change="handleSwitchChange('boOutLock', $event)"></el-switch>
+						</el-card>
+						<el-card class="box-card" shadow="hover" style="margin-top: 3px;">
+							<el-switch v-model="state.boEnterLock" active-text="" inactive-text="鍏ュ簱閿佸畾"
+								@change="handleSwitchChange('boEnterLock', $event)"></el-switch>
+						</el-card>
 					</el-collapse-item>
 
 					<el-collapse-item title="鍫嗗灈鏈�" name="2">
@@ -48,7 +60,7 @@
 					<el-button type="primary" :plain="floorStates.isPlain3"
 						@click="floorTogglePlain(3)">涓夊眰骞抽潰</el-button>
 				</div>
-				<div style="margin: 40px; height: 50%;">
+				<div style="margin: 40px; height: 58%;">
 					<div class="grid-container-line">
 						<div v-for="cell in cellsDataLine" :key="cell.Id">
 							<div v-if="cell.IsShow === 0" class="grid-item-line">
@@ -71,6 +83,124 @@
 						</div>
 					</div>
 				</div>
+				<div style="margin: 10px 40px;height: 30%; width: 100%; ">
+					<el-row>
+						<el-col :span="9">	
+							<div >
+								<el-form label-position="right" label-width="40px" style="">
+									<el-form-item label="宸ヤ綅">
+										<el-input id="locaText" :disabled="lockInputStatus" v-model="stationValue.locatNo" style="width: 200px; margin-right: 10px;"></el-input>
+										<el-button @click="textLock(stationValue)">{{lockText}}</el-button>
+										<el-button @click="write('zidong',stationValue)">鑷姩</el-button>
+										<el-button @click="write('shoudong',stationValue)">鎵嬪姩</el-button>
+										<el-button @mousedown="writeDown('huifu',stationValue)"  @mouseup="writeUp('huifu',stationValue)">鎶ヨ鎭㈠</el-button>
+									</el-form-item>
+																		
+									<el-form-item>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('1diandong',stationValue)"  @mouseup="writeUp('1diandong',stationValue)">1鐐瑰姩</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('2diandong',stationValue)"  @mouseup="writeUp('2diandong',stationValue)">2鐐瑰姩</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('3diandong',stationValue)"  @mouseup="writeUp('3diandong',stationValue)">3鐐瑰姩</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('4diandong',stationValue)"  @mouseup="writeUp('4diandong',stationValue)">4鐐瑰姩</el-button>
+									</el-form-item>
+
+									<el-form-item>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('1liandong',stationValue)"  @mouseup="writeUp('1liandong',stationValue)">1鑱斿姩</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('2liandong',stationValue)"  @mouseup="writeUp('2liandong',stationValue)">2鑱斿姩</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('3liandong',stationValue)"  @mouseup="writeUp('3liandong',stationValue)">3鑱斿姩</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('4liandong',stationValue)"  @mouseup="writeUp('4liandong',stationValue)">4鑱斿姩</el-button>
+									</el-form-item>
+									
+									<el-form-item>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('yizaisheng',stationValue)"  @mouseup="writeUp('yizaisheng',stationValue)">绉绘牻涓婂崌</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('fanzhuansheng',stationValue)"  @mouseup="writeUp('fanzhuansheng',stationValue)">缈昏浆鏈轰笂鍗�</el-button>
+									</el-form-item>
+
+									<el-form-item>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('yizaijiang',stationValue)"  @mouseup="writeUp('yizaijiang',stationValue)">绉绘牻涓嬮檷</el-button>
+										<el-button size="large" :disabled="lockStatus" @mousedown="writeDown('fanzhuanjiang',stationValue)"  @mouseup="writeUp('fanzhuanjiang',stationValue)">缈昏浆鏈轰笅闄�</el-button>
+									</el-form-item>
+
+								</el-form>
+							</div>
+						</el-col>
+						<el-col :span="15">
+							<div >
+								<el-form label-position="right" label-width="60px" style="" :inline="true">
+									<el-row :gutter="23">
+										<el-col :span="8">
+											<el-form-item >
+												<el-button @click="write('UpTask',stationValue)">鏇存敼浠诲姟</el-button>
+												<el-button @click="writeTaskInfo('writeTask',stationValue)">浠诲姟鍐欏叆</el-button>
+												<el-button @click="writeTaskInfo('writeTaskDelete',stationValue)">浠诲姟娓呯┖</el-button>
+											</el-form-item>
+										</el-col>	
+										<el-col :span="6">
+											<el-form-item label="浠诲姟鍙�" >
+												<el-input v-model="stationValue.taskNo" style="width: 200px; "></el-input> 
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="鎵樼洏鍙�">
+												<el-input v-model="stationValue.palletNo" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="璧峰宸ヤ綅">
+												<el-input v-model="stationValue.startLoction" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="鐩爣宸ヤ綅">
+												<el-input v-model="stationValue.endLoction" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="璧峰鎺�">
+												<el-input v-model="stationValue.startPai" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="璧峰鍒�">
+												<el-input v-model="stationValue.startLie" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="璧峰灞�">
+												<el-input v-model="stationValue.startCeng" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="鐩爣鎺�">
+												<el-input v-model="stationValue.endPai" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="鐩爣鍒�">
+												<el-input v-model="stationValue.endLie" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="鐩爣灞�">
+												<el-input v-model="stationValue.endCeng" style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										
+										<el-col :span="6">
+											<el-form-item label="缂犺啘淇″彿">
+												<el-input v-model="stationValue.chanMo" disabled style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+										<el-col :span="6">
+											<el-form-item label="鎷嗚啘淇″彿">
+												<el-input v-model="stationValue.chaiMo" disabled style="width: 200px; margin-right: 10px;"></el-input>
+											</el-form-item>
+										</el-col>
+									</el-row>	
+								</el-form>
+							</div>
+						</el-col>
+					</el-row>
+				</div>
 			</el-col>
 		</el-row>
 	</div>
@@ -79,18 +209,52 @@
 <script lang="ts" setup>
 import { ref, reactive, onMounted } from 'vue';
 import { listStatus, listPosition } from '/@/api/wcs/wcsPlc';
+import { GetLocationInfo,WriteLocationInfo,WriteInfo,WriteTaskInfo } from '/@/api/wcs/wcsDevice';
 import { signalR } from './signalR';
 import { cellsDataLine, cellsDataOne, cellsDataTwo, cellsDataThree } from './data';
+import { ElMessage } from "element-plus";
 
+// export default{
+
+// }
 const state = ref<any>({});
 const stackers = ref<any>({});
 const conveyors = ref<any>({});
+
+
+const lockText = ref("閿佸畾");
+const lockStatus = ref(true); 
+const lockInputStatus = ref(false); 
+
+const stationValue = ref<any>({
+	locatNo: '',//宸ヤ綅
+	layer:'',//妤煎眰
+	typeName:'',//鎿嶄綔绫诲瀷鍚嶇О
+	funcName:'',//浜嬩欢缁撴灉  true/false
+
+	taskNo:'',
+	palletNo:'',
+	startLoction:'',
+	endLoction:'',
+	startPai:'',
+	startLie:'',
+	startCeng:'',
+	endPai:'',
+	endLie:'',
+	endCeng:'',
+
+	chanMo:'',
+	chaiMo:'',
+
+});
+ 
+
 // 鏌ヨ鐘舵��
 const handleQuery = async () => {
 	var res = await listStatus();
 	state.value = res.data.result.modService;
 	stackers.value = res.data.result.listPlc.filter(s => s.type == 0);
-	conveyors.value = res.data.result.listPlc.filter(s => s.type == 1 || s.type == 4);
+	conveyors.value = res.data.result.listPlc.filter(s => s.type == 1);
 
 	var res2 = await listPosition();
 	res2.data.result.forEach(s => {
@@ -100,13 +264,14 @@
 			if (foundCell) {
 				//淇敼楂樺害
 				foundCell.BoxHeight = s.boxHeight;
+				foundCell.EndLocat = s.endLocat;
 			}
 		}
 		else if (s.type == 1) {
 			// 鏇存柊杈撻�佺嚎鏁版嵁
-			updateCellData(cellsDataOne, s);
-			updateCellData(cellsDataTwo, s);
-			updateCellData(cellsDataThree, s);
+			updateCellData(cellsDataOne.value, s);
+			updateCellData(cellsDataTwo.value, s);
+			updateCellData(cellsDataThree.value, s);
 		}
 	});
 };
@@ -135,31 +300,64 @@
 	signalR.off('UpdateService');
 	signalR.on('UpdateService', (data: any) => {
 		state.value = data;
+		if (data.error) {
+			ElMessage({
+				message: data.error,
+				type: "error",
+			});
+		}
 	});
 	signalR.off('PublicPosition');
 	signalR.on('PublicPosition', (data: any) => {
-
 		if (data.type == 1) {
 			// 鏇存柊杈撻�佺嚎鏁版嵁
-			updateCellData(cellsDataOne, data);
-			updateCellData(cellsDataTwo, data);
-			updateCellData(cellsDataThree, data);
+			updateCellData(cellsDataOne.value, data);
+			updateCellData(cellsDataTwo.value, data);
+			updateCellData(cellsDataThree.value, data);
 		}
 		else if (data.type == 0) {
 			// 鏇存柊鍫嗗灈鏈烘暟鎹�
-			const foundCell = cellsDataLine.value.find(cell => cell.Code === data.stationNum);
-			if (foundCell) {
-				//淇敼楂樺害
-				foundCell.BoxHeight = data.boxHeight;
-			}
+			updateStacker(data)
+			// const foundCell = cellsDataLine.value.find(cell => cell.Code === data.stationNum);
+			// if (foundCell) {
+			// 	//淇敼楂樺害
+			// 	foundCell.BoxHeight = data.boxHeight;
+			// }
 		}
 	});
 });
 const handleSwitchChange = (field: string, value: boolean) => {
 	const param = { [field]: value };
-	debugger;
 	signalR.invoke('UpdateService', param);
 };
+//鏇存柊鍫嗗灈鏈�
+// updateStacker({ stationNum: '10', boxHeight: 200 })
+function updateStacker(data: any) {
+	debugger;
+	const foundCell = cellsDataLine.value.find(cell => cell.Code === data.stationNum);
+	if (foundCell) {
+		foundCell.EndLocat = data.endLocat;
+		const startHeight = foundCell.BoxHeight;
+		const targetHeight = data.boxHeight;
+		const duration = 1000; // 鍔ㄧ敾鎸佺画鏃堕棿锛堟绉掞級
+		const interval = 50; // 鏇存柊闂撮殧锛堟绉掞級
+		const step = (targetHeight - startHeight) / (duration / interval);
+
+		const update = () => {
+			if ((step > 0 && foundCell.BoxHeight < targetHeight) || (step < 0 && foundCell.BoxHeight > targetHeight)) {
+				foundCell.BoxHeight += step;
+				if ((step > 0 && foundCell.BoxHeight >= targetHeight) || (step < 0 && foundCell.BoxHeight <= targetHeight)) {
+					foundCell.BoxHeight = targetHeight; // 纭繚鏈�缁堝�煎噯纭�
+					clearInterval(timer);
+				}
+			} else {
+				clearInterval(timer);
+			}
+		};
+
+		const timer = setInterval(update, interval);
+	}
+}
 
 // 鏇存柊杈撻�佺嚎鏁版嵁鐨勯�氱敤鍑芥暟
 function updateCellData(cellsData: any[], data: any) {
@@ -177,7 +375,7 @@
 const activeName = ['1', '2', '3'];
 
 //杈撻�佺嚎鏁版嵁
-let cellsData = ref(cellsDataOne);
+let cellsData = cellsDataOne.value;
 
 
 // 灞傚钩闈㈢姸鎬�
@@ -189,8 +387,8 @@
 
 //鍒囨崲灞傚钩闈�
 function floorTogglePlain(buttonNumber) {
-	const floorData = [cellsDataOne, cellsDataTwo, cellsDataThree];
-
+	const floorData = [cellsDataOne.value, cellsDataTwo.value, cellsDataThree.value];
+	debugger;
 	if (buttonNumber >= 1 && buttonNumber <= 3) {
 		const index = buttonNumber - 1;
 		floorStates.value = {
@@ -198,12 +396,143 @@
 			isPlain2: index !== 1,
 			isPlain3: index !== 2
 		};
-		cellsData.value = floorData[index];
+		cellsData = floorData[index];
 	}
 }
+
+
+const textLock = async (row: any) => {
+	if(lockText.value == "閿佸畾"){
+		lockStatus.value=false;
+		lockInputStatus.value=true;
+		lockText.value ="瑙i攣";
+		if (floorStates.value.isPlain1 == false) {
+			row.layer = 1;
+		}else if(floorStates.value.isPlain2 == false){
+			row.layer = 2;
+		}
+		else if(floorStates.value.isPlain3 == false){
+			row.layer = 3;
+		}
+		row.typeName = "suoding";
+		
+		console.log(row);
+		var res = await WriteLocationInfo(row);
+		var res2 = await GetLocationInfo(row);
+		let rowData = JSON.parse(JSON.stringify(res2.data.result));
+		stationValue.value = res2.data.result;
+// 		stationValue.value = {
+// 	locatNo: '',//宸ヤ綅
+// 	layer:'',//妤煎眰
+// 	typeName:'',//鎿嶄綔绫诲瀷鍚嶇О
+// 	funcName:null,//浜嬩欢缁撴灉  true/false
+
+// 	taskNo:'',
+// 	palletNo:'',
+// 	startLoction:'',
+// 	endLoction:'',
+// 	startPai:'',
+// 	startLie:'',
+// 	startCeng:'',
+// 	endPai:'',
+// 	endLie:'',
+// 	endCeng:'',
+// }
+
+
+		console.log(res2.data.result);
+		console.log(rowData);
+		
+	}else{
+		lockStatus.value=true;
+		lockInputStatus.value=false;
+		lockText.value ="閿佸畾";
+	} 
+	 
+}
+
+const write = async (type: string,row: any) => {
+	if (lockStatus.value == false) {
+		ElMessage.success("璇峰厛閿佸畾");
+		return;
+	}
+	if (floorStates.value.isPlain1 == false) {
+		row.layer = 1;
+	}else if(floorStates.value.isPlain2 == false){
+		row.layer = 2;
+	}
+	else if(floorStates.value.isPlain3 == false){
+		row.layer = 3;
+	}
+	row.typeName = type;
+	
+	console.log(row);
+	var res = await WriteInfo(row);
+	console.log(res.data.result);
+	ElMessage.success(res.data.result);
+}
+
+const writeDown = async (type: string,row: any) => {
+	if (lockStatus.value == false) {
+		ElMessage.success("璇峰厛閿佸畾");
+		return;
+	}
+	if (floorStates.value.isPlain1 == false) {
+		row.layer = 1;
+	}else if(floorStates.value.isPlain2 == false){
+		row.layer = 2;
+	}
+	else if(floorStates.value.isPlain3 == false){
+		row.layer = 3;
+	}
+	row.typeName = type;
+	row.funcName = "true";
+	var res = await WriteInfo(row);
+	console.log(type+"鎸変笅浜嬩欢");
+	
+	// ElMessage.success(res.data.result);
+}
+const writeUp = async (type: string,row: any) => {
+	if (lockStatus.value == false) {
+		ElMessage.success("璇峰厛閿佸畾");
+		return;
+	}
+	if (floorStates.value.isPlain1 == false) {
+		row.layer = 1;
+	}else if(floorStates.value.isPlain2 == false){
+		row.layer = 2;
+	}
+	else if(floorStates.value.isPlain3 == false){
+		row.layer = 3;
+	}
+	row.typeName = type;
+	row.funcName = "false";
+	var res = await WriteInfo(row);
+	console.log(type+"鎶捣浜嬩欢");
+	
+	// ElMessage.success('asdf'+ res.data.result);
+}
+
+const writeTaskInfo = async (type: string,row: any) => {
+	if (floorStates.value.isPlain1 == false) {
+		row.layer = 1;
+	}else if(floorStates.value.isPlain2 == false){
+		row.layer = 2;
+	}
+	else if(floorStates.value.isPlain3 == false){
+		row.layer = 3;
+	}
+	row.typeName = type;
+	var res = await WriteTaskInfo(row);
+	console.log(type+"鎶捣浜嬩欢");
+	
+	// ElMessage.success('asdf'+ res.data.result);
+}
+
 </script>
 
 <style scoped>
+
 .box-card {
 	height: 30px;
 	padding: 0;

--
Gitblit v1.8.0