From 1ebc598658f85c07c7cbabaf289ab89838a8acc9 Mon Sep 17 00:00:00 2001 From: clll <1320612696@qq.com> Date: 星期一, 27 十一月 2023 08:54:26 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes --- CanadaMes-ui/src/views/Electrical/ServoManualone.vue | 320 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 239 insertions(+), 81 deletions(-) diff --git a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue index 636fab4..b9f65fc 100644 --- a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue +++ b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue @@ -1,69 +1,57 @@ <template> - <div class="app"> + <div class="app"> <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb"> - <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') + <router-link to="/Electrical/alarm" tag="el-button" type="text" active-class="blue-button">{{ $t('Alarm') + }}</router-link> + <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') + }}</router-link> + <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') + }}</router-link> + <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') + }}</router-link> + <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') + }}</router-link> + <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual') + }}</router-link> + </el-breadcrumb> + + <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb"> + + <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{ $t('Servomanualone') }}</router-link> - <router-link to="/Electrical/State" tag="el-button" type="text" active-class="blue-button">{{ $t('State') - }}</router-link> - <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') - }}</router-link> - <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') - }}</router-link> - <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') - }}</router-link> - <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ - $t('ServoManual') - }}</router-link> + <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1') + }}</router-link> + <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2') + }}</router-link> + <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning1') + }}</router-link> + <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning2') + }}</router-link> </el-breadcrumb> - <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb"> - - <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{ - $t('Servomanualone') - }}</router-link> - <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1') - }}</router-link> - <!-- <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2') - }}</router-link> --> - <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{ - $t('Positioning1') - }}</router-link> - <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{ - $t('Positioning2') - }}</router-link> - <router-link to="/Electrical/Manualoneposition" tag="el-button" type="text" active-class="blue-button">{{ - $t('Manualoneposition') - }}</router-link> - <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{ - $t('ManualonePosition2') - }}</router-link> - <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{ - $t('AutomaticParameterSetting') - }}</router-link> - <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{ - $t('ManualJog') - }}</router-link> - </el-breadcrumb> - - <el-row :gutter="20"> - <el-col :span="12" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex"> - <el-card class="json-block" style="width:450px;"> - <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex" class="item-container"> + <el-row :gutter="26"> + <el-col :span="12" v-for="(dataGroup, groupIndex) in jsonData" :key="groupIndex"> + <el-card class="json-block" style="width:auto;"> + <el-row > + <el-col v-for="(item, itemIndex) in dataGroup" :key="itemIndex" :span="12"> + <div class="item-container"> <div class="item-row"> - <span class="name" style="width:100px;">{{ item.name }}</span> - <el-input style="width:250px;" v-if="item.type === '0'" v-model="item.value" class="input-box"></el-input> + <span class="name" style='width:230px;'>{{ item.name }}</span> + <el-input v-if="item.type === '0'" v-model="item.value" class='input-box' :class="{ 'special-class': groupIndex === 0,'special-class2': groupIndex === 1 }" v-show="groupIndex !== 0 && groupIndex !== 1" ></el-input> </div> </div> - <div class="button-row" style="display: flex; justify-content: space-between;"> - <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex"> - <el-button v-if="item.button" :name="item.button.name" class="action-button" - @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend();">{{ item.button.name - }}</el-button> - </div> - </div> - </el-card> - </el-col> - </el-row> + </el-col> + </el-row> + <div class="button-row" style="display: flex; justify-content: space-between;"> + <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex"> + <el-button v-if="item.button" :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button> + + </div> + </div> + </el-card> + </el-col> +</el-row> + <!-- <el-button @click="submitDataToBackend">鎻愪氦鏁版嵁鍒板悗绔�</el-button> --> </div> </template> @@ -71,45 +59,211 @@ <script> import LanguageMixin from '../../lang/LanguageMixin' import data from '../../configuration/ServoManualone' - -export default { +import { throttle } from 'lodash'; +let socket; + export default { name: "ServoManualone", mixins: [LanguageMixin], - data () { + data() { return { - jsonData: data // 鍔犺浇鏁翠釜data.json鏂囦欢浣滀负jsonData + jsonData: data , + + // 鍔犺浇鏁翠釜data.json鏂囦欢浣滀负jsonData } }, + created () { + this.initWebSocket(); + // console.log('jsonData:', this.jsonData); + + }, methods: { - updateButtonValue (dataGroup, itemIndex) { - this.$set(dataGroup[itemIndex].button, 'value', 1); // 鐐瑰嚮鎸夐挳鍚庡皢鍊兼敼涓�1 - }, - submitDataToBackend () { - const inputData = this.jsonData.map(dataGroup => { - return dataGroup.map(item => { - if (item.type === '0') { - return { name: item.name, value: item.value, address: item.address }; - } else if (item.button) { - return { name: item.button.name, value: item.button.value, address: item.button.address }; - } - return null; - }); - }); + updateButtonValue(dataGroup, itemIndex) { + // 灏嗗綋鍓嶆寜閽殑鍊艰涓�1 - // 妯℃嫙鎻愪氦鏁版嵁鍒板悗绔殑鎿嶄綔锛屽疄闄呮儏鍐典笅闇�瑕佹牴鎹綘鐨勫悗绔疉PI杩涜淇敼 - console.log('鎻愪氦浠ヤ笅鏁版嵁鍒板悗绔�:', inputData); + this.$set(dataGroup[itemIndex].button, 'value', 1); + + +}, +submitDataToBackend(currentButtonName) { + if (currentButtonName === '鍗婅嚜鍔ㄥ惎鍔�') { + const data = []; + +for (let i = 0; i < 2; i++) { + const inputData = this.jsonData[i].filter(item => item.type === '0').map(item => { + return { value: item.value }; + }); + + const values = inputData.map(item => item.value); + + data.push(values); +} + + + +const jsonObject = { data }; + +// 鎻愪氦鏁版嵁鍒板悗绔� +const jsonString = JSON.stringify(jsonObject); +console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString); +socket?.send(jsonString); + + } + + if (currentButtonName === '澶嶄綅') { + + const data2 = []; + const resetButtonValues = this.jsonData.map(item => { + const buttonItem = item.find(subItem => subItem.button && subItem.button.name === '澶嶄綅'); + return buttonItem ? buttonItem.button.value : null; +}).filter(value => value !== null); + +// 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓� +data2.push(...resetButtonValues); +const jsonObject2 = { data2 }; + +// 鎻愪氦鏁版嵁鍒板悗绔� +const jsonString2 = JSON.stringify(jsonObject2); +console.log('鎵�鏈塗ype涓�0鐨剉alue:', jsonString2); +socket?.send(jsonString2); + + +} + if (currentButtonName === 'A01鍗婅嚜鍔�') { + const elements = document.getElementsByClassName('special-class'); + for (let i = 0; i < elements.length; i++) { + if (elements[i].style.display === 'none') { + elements[i].style.display = ''; // 鏄剧ず鍏冪礌 + } } } + + if (currentButtonName === 'A02鍗婅嚜鍔�') { + const elements = document.getElementsByClassName('special-class2'); + for (let i = 0; i < elements.length; i++) { + if (elements[i].style.display === 'none') { + elements[i].style.display = ''; // 鏄剧ず鍏冪礌 + } + } + } + + + + +}, + + + initWebSocket () { + + let viewname = "ServoManualone"; + + if (typeof WebSocket === "undefined") { + console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket"); + } else { + let socketUrl = "ws://" + "localhost:8888" + "/springboot-vue3/api/talk/" + viewname; + + if (socket != null) { + socket.close(); + socket = null; + } + + // 寮�鍚竴涓獁ebsocket鏈嶅姟 + socket = new WebSocket(socketUrl); + + // 鎵撳紑浜嬩欢 + socket.onopen = function () { + console.log("websocket宸叉墦寮�"); + }; + + // 鏀跺埌娑堟伅 + socket.onmessage = (msg) => { + if (!msg.data) { + return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫 + } + + let obj = JSON.parse(msg.data); + // console.log(obj) + const jsonData2 = this.jsonData; + + const handleMouseMove = throttle(function(event) { + const inputBox = document.querySelectorAll('.el-card__body'); + const target = event.target; + if (inputBox && Array.from(inputBox).every(box => !box.contains(target))) { + // 鎵ц鏇存柊閫昏緫 + for (let i = 0; i < 6; i++) { + jsonData2[i].forEach((item, index) => { + if (typeof item.value !== 'undefined' && typeof obj[`zuhe${i+1}`][0][index] !== 'undefined') { + item.value = obj[`zuhe${i+1}`][0][index]; + } + }); } + +// 閬嶅巻guzhang鏁扮粍 +for (let i = 0; i < obj.guzhang[0].length; i++) { + const guzhangValue = obj.guzhang[0][i]; + + // 鏌ユ壘jsonData2涓甫鏈�"button"鐨勫璞★紝骞朵笖name绛変簬"鏁呴殰" + for (let j = 0; j < jsonData2.length; j++) { + const section = jsonData2[j]; + + for (let k = 0; k < section.length; k++) { + const item = section[k]; + + if (item.button && item.button.name === "鏁呴殰") { + // 鏇存柊value灞炴�� + item.button.value = guzhangValue; + break; + } + } + + + } +} + + + + + + + + } +}, 200); + + document.addEventListener('mouseover', handleMouseMove); +}; + + + + + // 鍏抽棴浜嬩欢 + socket.onclose = function () { + console.log("websocket宸插叧闂�"); + }; + + // 鍙戠敓閿欒浜嬩欢 + socket.onerror = function () { + console.log("websocket鍙戠敓浜嗛敊璇�"); + }; + + } + }, + send () { + + + socket?.send(JSON.stringify(this.messagepack)); + } + + } + } </script> <style scoped> + + .item-row { display: flex; align-items: center; - margin-bottom: 2px; - /* 璋冩暣姣忎釜椤圭洰涔嬮棿鐨勯棿璺� */ + margin-bottom: 2px; /* 璋冩暣姣忎釜椤圭洰涔嬮棿鐨勯棿璺� */ } .action-button { @@ -117,8 +271,12 @@ background: #66b1ff; color: #FFF; } - .blue-button { background-color: skyblue; } +.error-button { + background-color: red; +} + + </style> \ No newline at end of file -- Gitblit v1.8.0