From b9f5657fc9a083238a1a27ef35ef885f1e912b4f Mon Sep 17 00:00:00 2001 From: huanghongfeng <huanghongfeng@hnkhzn.com> Date: 星期二, 25 六月 2024 15:24:24 +0800 Subject: [PATCH] 后端 --- 代码管理/工业大屏 | 2 代码管理/PCS/WCS_Client/src/assets/linesd.png | 0 代码管理/WMS/WMS_Server/WIDESEA_WMS/IServices/system/Partial/Idt_stationinfoService.cs | 1 代码管理/PCS/WCS_Client/src/views/Homes/Homest/centerLeft2index.vue | 983 +++++++++++++ 代码管理/PCS/WCS_Client/src/assets/imgs/jxsk.png | 0 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs | 483 ++++++ 代码管理/PCS/WCS_Client/src/assets/imgs/huojia.png | 0 代码管理/PCS/WCS_Client/src/assets/imgs/tuyouji.png | 0 代码管理/PCS/WCS_Client/src/views/Homes/centerLeft2.vue | 174 ++ 代码管理/PCS/WCS_Client/src/views/Homes/Homest/centerLeft1index.vue | 1139 +++++++++++++++ 代码管理/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs | 18 代码管理/PCS/WCS_Client/src/assets/imgs/tuyoujilun.png | 0 代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WMS/Partial/dt_stationinfoController.cs | 12 代码管理/PCS/WCS_Client/src/assets/imgs/pcs_x copy.png | 0 代码管理/PCS/WCS_Client/src/views/Home.vue | 241 +++ 代码管理/PCS/WCS_Client/src/assets/imgs/pcs_lun.png | 0 代码管理/PCS/WCS_Client/src/views/Homes/centerLeft1.vue | 77 + 代码管理/PCS/WCS_Client/src/assets/imgs/huojialun.png | 0 代码管理/PCS/WCS_Client/src/assets/imgs/jxscl.png | 0 代码管理/PCS/WCS_Client/src/views/Homes/Homest/centerLeft3index.vue | 1135 +++++++++++++++ 代码管理/PCS/WCS_Client/src/assets/lines.png | 0 21 files changed, 4,251 insertions(+), 14 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/huojia.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/huojia.png" new file mode 100644 index 0000000..7bad433 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/huojia.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/huojialun.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/huojialun.png" new file mode 100644 index 0000000..9d070b0 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/huojialun.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/jxscl.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/jxscl.png" new file mode 100644 index 0000000..57e0bd0 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/jxscl.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/jxsk.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/jxsk.png" new file mode 100644 index 0000000..8f927cf --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/jxsk.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_lun.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_lun.png" new file mode 100644 index 0000000..d0618a4 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_lun.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_x copy.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_x copy.png" new file mode 100644 index 0000000..9f2f5ad --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/pcs_x copy.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/tuyouji.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/tuyouji.png" new file mode 100644 index 0000000..13a4096 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/tuyouji.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/tuyoujilun.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/tuyoujilun.png" new file mode 100644 index 0000000..0902bde --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/imgs/tuyoujilun.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/lines.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/lines.png" new file mode 100644 index 0000000..6c07bec --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/lines.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/linesd.png" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/linesd.png" new file mode 100644 index 0000000..de69d78 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/assets/linesd.png" Binary files differ diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Home.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Home.vue" index 9bddc94..91a8a2b 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Home.vue" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Home.vue" @@ -1,24 +1,243 @@ <template> - <div class="title">Welcome To PCS!</div> + <div class="qhuan"> + <el-button type="primary" :class="{ 'qh_box': true, 'selected': selected === '涓嬫枡鍖�' }" + v-on:click="selectss(0)">涓嬫枡鍖�</el-button> + <el-button type="primary" :class="{ 'qh_box': true, 'selected': selected === '搴撳尯' }" + v-on:click="selectss(1)">搴撳尯</el-button> + </div> + + <!-- 涓嬫枡鍖轰唬鐮� --> + <div v-if="selected === '涓嬫枡鍖�'" style="margin-top: 30px;"> + <centerLeft1 :dataList="dataxlist" :plcList_one="plcList_one" :plcList_two="plcList_two" :plcList_three="plcList_three" /> + <div style="height: 50px;width: 100%;"> + <div class="dd_div" :style="{ 'background-color': getBackgroundColor(item1.enable, item1.location_state) }"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="item1.quantity !== 0 && item1.tray_type !== ''"> + <div>搴撲綅缂栧彿锛歿{ item1.stationCode }}</div> + <div v-if="item1.tray_type == 'SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + <div>鎵樼洏鏁伴噺锛� {{ item1.quantity }}</div> + </template> + <template #content v-else> + <div>搴撲綅缂栧彿锛歿{ item1.stationCode }}</div> + <div>鐩墠鏆傛棤鍙犵洏鏁版嵁</div> + </template> + <!-- <div > + </div> --> + <div class="v_dd" v-if="item1.location_state === 'Stroge'"> + <img src="../assets/imgs/huojia.png" style="width: 100%;" /> + </div> + <div class="v_dd" v-else></div> + </el-tooltip> + </div> + </div> + <div style="margin-left: 65px;"> + <div class="table-container"> + <div class="scrollable-table" > + <table class="one_tal"> + <tr v-for="(item, k) in 2" :key="k"> + <td v-for="items in filteredItems(ddataList, k + 1)" :key="items.stationCode" + :style="{ 'background-color': getBackgroundColor(items.enable, items.location_state) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content> + <div>搴撲綅缂栧彿锛歿{ items.stationCode }}</div> + <div v-if="items.tray_type=='SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + <div>鏁伴噺锛歿{ items.quantity }}</div> + <div v-if="items.location_state === 'Stroge'">璐т綅鐘舵�侊細鏈夎揣</div> + <div v-if="items.location_state === 'Empty'">璐т綅鐘舵�侊細鏃犺揣</div> + </template> + <div style="height: 35px;writing-mode: vertical-lr;width: 35px;"> + <img src="../assets/imgs/huojia.png" style="width: 100%;" v-if="items.location_state === 'Stroge'" /> + </div> + </el-tooltip> + </td> + </tr> + </table> + </div> + </div> + </div> + <!--鎵樼洏鍙犳斁鍖�--> + <div style="height: 50px;"></div> + </div> + <!-- 涓嬫枡鍖轰唬鐮� --> + + + <!-- 搴撳尯浠g爜 --> + <div v-else-if="selected === '搴撳尯'" style="margin-top: 30px;margin-left: 30px;"> + <centerLeft2 :dataList="datalist" /> + </div> + <!-- 搴撳尯浠g爜 --> </template> <script> -import { ref, reactive } from 'vue' - +import axios from 'axios'; +import centerLeft1 from '@/views/Homes/centerLeft1.vue'; +import centerLeft2 from '@/views/Homes/centerLeft2.vue'; export default { - setup() { - return { + data() { + return { + selected: '涓嬫枡鍖�', // 榛樿閫変腑涓婁笅鏂欏尯 + datalist: [], + dataxlist: [], + item1: [], + ddataList: [], + url: "http://127.0.0.1:8098/api/", + plcList_one:[], + plcList_two:[], + plcList_three:[], + }; + }, + components: { + centerLeft1, + centerLeft2 + }, + mounted() { + + }, + created() { + this.One_unit_plc(); + this.Two_unit_plc(); + this.Three_unit_plc(); + this.selList(); + this.selListxl(); + + setInterval(() => { + this.selList(); + }, 60000); + + setInterval(() => { + this.selListxl(); + this.One_unit_plc(); + this.Two_unit_plc(); + this.Three_unit_plc(); + }, 1000); + + }, + methods: { + openDialog() { + this.isModalVisible = true; + }, + //鍒囨崲 + selectss(selvelue) { + if (selvelue == "0") { + this.selected = "涓嬫枡鍖�"; + } else { + + this.selected = "搴撳尯"; + this.selList(); + } + }, + //鑾峰彇搴撳尯鐨勬暟鎹� + selList() { + this.loading = true; + axios.post(this.url + "dt_stationinfo/dt_stationinfolist").then(x => { + this.datalist = x.data.data; + for (var i = 0; i < x.data.data[1].item1.length; i++) { + this.ddataList[i] = x.data.data[1].item1[i]; + } + }) + .catch(error => { + console.error('璇锋眰鍑洪敊锛�', error); + }); + }, + //鑾峰彇涓嬫枡鍙g殑鏁版嵁 + selListxl() { + this.loading = true; + axios.post(this.url + "dt_stationinfo/pcs_dt_stationinfolist").then(x => { + this.dataxlist = x.data.data; + this.item1 = x.data.data[4].item1[0]; + + }) + .catch(error => { + console.error('璇锋眰鍑洪敊锛�', error); + }); + }, + //鏇存敼棰滆壊 + getBackgroundColor(enable, locationState) { + if (enable == '0') { + return '#C0C4CC'; + } + else { + switch (locationState) { + case 'Stroge': + return '#409eff'; + case 'Empty': + return 'lightgreen'; + case 'InBusy': + return 'yellow'; + case 'OutBusy': + return 'yellow'; + case 'Busy': + return 'yellow'; + case 'Abnormal': + return 'red'; + case 'Abnormal': + return 'yellow'; + default: + return 'transparent'; + } + } + }, + //鑾峰彇杈婇亾绾�1鍗曞厓涓婄殑鏁版嵁 + One_unit_plc(){ + this.http.post('api/Readplc/One_unit_plc') + .then((response) => { + this.plcList_one=response; + + }) + .catch((error) => { + console.error('Error fetching current user info:', error); + }); + }, + //鑾峰彇杈婇亾绾�2鍗曞厓涓婄殑鏁版嵁 + Two_unit_plc(){ + this.http.post('api/Readplc/Two_unit_plc') + .then((response) => { + this.plcList_two=response; + }) + .catch((error) => { + console.error('Error fetching current user info:', error); + }); + }, + //鑾峰彇杈婇亾绾�3鍗曞厓涓婄殑鏁版嵁 + Three_unit_plc(){ + this.http.post('api/Readplc/Three_unit_plc') + .then((response) => { + this.plcList_three=response; + }) + .catch((error) => { + console.error('Error fetching current user info:', error); + }); + } + + }, + computed: { + filteredItems() { + return (itemList, line) => { + return itemList.filter(item => item.line === line); + }; } } } </script> -<style scoped> -.title { - line-height: 70vh; - text-align: center; - font-size: 28px; - color: orange; +<style> +body { + background-image: url("../assets/imgs/pageBg.png"); +} + +.dd_div { + width: 57px; + height: 53px; + margin-left: 1300px; + margin-top: 70px; +} + +.v_dd { + width: 57px; + height: 50px; + margin-top: 10px; } </style> \ No newline at end of file diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft1index.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft1index.vue" new file mode 100644 index 0000000..996ea87 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft1index.vue" @@ -0,0 +1,1139 @@ +<template> + <div class="container"> + <div style="display: flex;"> + <div class="vk_div" v-on:click="isModalVisible3 = true" v-for="items in plcList_one.section_fifteen" + :style="{ 'background-color': getBackgroundColor4(items.vk_state) }"> + <div style="text-align: center;line-height: 50px;">VK4</div> + <el-dialog v-model="isModalVisible3" title="VK4"> + <div>Name: + <el-input v-model="items.name" :disabled="true" style="width: 100px;"> </el-input> + </div> + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 30%;"> + <p>Power on + <div class="div_cl" v-if="items.power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="items.ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="items.ready_for_Auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>VK fault + <div class="div_cl" v-if="items.vK_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety ok + <div class="div_cl" v-if="items.safety_OK == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>state jog input A1 + <div class="div_cl" v-if="items.state_JOG_bag1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state auto input A1 + <div class="div_cl" v-if="items.state_AUTO_bag1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>input A1 fault + <div class="div_cl" v-if="items.bag_in_1_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state jog input A2 + <div class="div_cl" v-if="items.state_JOG_bag2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state auto input A2 + <div class="div_cl" v-if="items.state_AUTO_bag2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>input A2 fault + <div class="div_cl" v-if="items.bag_in_2_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + + <p>state jog output A1 + <div class="div_cl" v-if="items.state_JOG_bag3 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state auto output A1 + <div class="div_cl" v-if="items.state_AUTO_bag3 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>output A1 fault + <div class="div_cl" v-if="items.bag_out_1_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state jog output A2 + <div class="div_cl" v-if="items.state_JOG_bag4 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state auto output A2 + <div class="div_cl" v-if="items.state_AUTO_bag4 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>output A2 fault + <div class="div_cl" v-if="items.bag_out_2_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>safety door 1 closed + <div class="div_cl" v-if="items.safetydoor_1_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 2 closed + <div class="div_cl" v-if="items.safetydoor_2_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 3 closed + <div class="div_cl" v-if="items.safetydoor_3_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 4 closed + <div class="div_cl" v-if="items.safetydoor_4_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 5 closed + <div class="div_cl" v-if="items.safetydoor_5_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 6 closed + <div class="div_cl" v-if="items.safetydoor_6_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 7 closed + <div class="div_cl" v-if="items.safetydoor_7_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 8 closed + <div class="div_cl" v-if="items.safetydoor_8_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 9 closed + <div class="div_cl" v-if="items.safetydoor_9_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + + </div> + <!--鏈�澶iv--> + </el-dialog> + </div> + <!--杞﹂棿涔嬩笂鐨勮緤閬撶嚎--> + <div class="box" style="margin-left: 33px;"> + + <div v-for="items in plcList_one.section_four" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_part_process != '0'"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_part_process != '0'"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--杞﹂棿涔嬩笂鐨勮緤閬撶嚎--> + </div> + + <!--涓婅溅闂�--> + <div style="margin-top: -6px;margin-left: 58px;"> + <div style="display: flex;"> + <div style="margin-top: 67px;"> + <!--宸︿笂瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 2" + v-on:click="open('Machine1')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"> + + </div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--宸︿笂瑙掕溅闂�--> + + <!--杞﹂棿涓棿杞﹁疆--> + <div style="display: flex;margin-left: -19px;margin-top: 5px;"> + <!--闈犲乏杞﹁疆--> + <div style="display: flex;"> + <div v-for="items in plcList_one.section_six"> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲乏杞﹁疆--> + + <!--闈犲彸杞﹁疆--> + <div style="display: flex;margin-left: 5px;"> + <div v-for="items in plcList_one.section_seven"> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲彸杞﹁疆--> + </div> + <!--宸﹁溅闂翠腑闂磋溅杞�--> + + <!--宸︿笅瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 3" v-on:click="open('Machine2')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + <div>c_Name:{{ items.c_Name }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"> + </div> + + + + </div> + </div> + <!--宸︿笅瑙掕溅闂�--> + + </div> + <!--宸﹁溅闂�--> + + <!--涓婁腑涓嬮棿杈婇亾绾垮拰杞﹁疆鍦�--> + <div> + <!--涓婅溅闂翠腑闂磋緤閬�--> + <div class="box" style="height: 102px;"> + + <div v-for="items in plcList_one.section_three" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--涓婅溅闂翠腑闂磋緤閬�--> + + <!--涓嬭溅闂翠腑闂磋緤閬�--> + <div class="box" style="height: 102px;margin-top: 45px;"> + <div v-for="items in plcList_one.section_two" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--涓嬭溅闂翠腑闂磋緤閬�--> + </div> + <!--涓婅溅闂磋緤閬撶嚎--> + + + <!--鍙宠溅闂�--> + <div> + <!--鏈烘鎵�--> + <div style="margin-left: 30px;margin-top: -35px;" v-for="items in plcList_one.section_ten" + v-on:click="isModalVisible2 = true" > + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !== ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box2_sto_yj" :style="{ 'background-color': getBackgroundColor4(items.g_gantry_state)}"> + <img src="../../../assets/imgs/jxscl.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/jxsk.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + <el-dialog v-model="isModalVisible2" title="鏈烘鎵�"> + <div>Name: + <el-input v-model="items.g_name" :disabled="true" style="width: 100px;"> + </el-input> + </div> + + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 40%;"> + <p>power on + <div class="div_cl" v-if="items.g_power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="items.g_ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="items.g_ready_for_auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state JOG + <div class="div_cl" v-if="items.g_state_JOG == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state MDA + <div class="div_cl" v-if="items.g_state_MDA == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state AUTO + <div class="div_cl" v-if="items.g_state_AUTO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>communication IO + <div class="div_cl" v-if="items.g_communication_IO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 40%;margin-left: 40px;"> + <p>emergency stop + <div class="div_cl" v-if="items.g_emergency_stop_portal == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>drive fault + <div class="div_cl" v-if="items.g_drive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>portal fault + <div class="div_cl" v-if="items.g_portal_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program running + <div class="div_cl" v-if="items.g_programm_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + </div> + </el-dialog> + </div> + <!--鏈烘鎵�--> + <div style="height: 30px;"></div> + <!--鍙充笂瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 0" v-on:click="open('Machine3')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--鍙充笂瑙掕溅闂�--> + + + <!--鍙宠溅闂翠腑闂磋溅杞�--> + <div style="display: flex;margin-top: 5px;"> + + <!--闈犲乏杞﹁疆--> + <div style="display: flex;"> + <div v-for="items in plcList_one.section_eight"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲乏杞﹁疆--> + + <!--闈犲彸杞﹁疆--> + <div style="display: flex;margin-left: 5px;"> + <div v-for="items in plcList_one.section_nine"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲彸杞﹁疆--> + </div> + <!--鍙宠溅闂翠腑闂磋溅杞�--> + + <!--鍙充笅瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 1" v-on:click="open('Machine4')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--鍙充笅瑙掕溅闂�--> + </div> + <!--鍙宠溅闂�--> + </div> + </div> + <!--涓婅溅闂�--> + + + <div style="display: flex;margin-top: -6px;"> + + <div style="position: relative;width: 200px;"> + <!--瑙嗚妫�娴�1--> + <div style="position: absolute; bottom: 140px; right: 140px;" + v-for="items in plcList_one.section_thirteen" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div style="border: 1px solid #ffffff; width: 45px; height: 42px; "> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--瑙嗚妫�娴�1--> + <!--瑙嗚妫�娴�2--> + <div style="position: absolute; bottom: 140px; right: 80px;" + v-for="items in plcList_one.section_fourteen" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div style="border: 1px solid #ffffff; width: 45px; height: 42px; "> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--瑙嗚妫�娴�2--> + <!--娑傛补鏈�--> + <div style="position: absolute; bottom: 140px; right: 20px;" v-for="items in plcList_one.section_eleven" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div style="border: 1px solid #ffffff; width: 45px; height: 67px; "> + <img src="../../../assets/imgs/tuyoujilun.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/tuyouji.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--娑傛补鏈�--> + + <!--鏈烘鎵�--> + <div style="position: absolute; bottom: 50px; right: 20px;" v-for="items in plcList_one.section_twelve"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !== ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box2_sto_yj"> + <img src="../../../assets/imgs/jxscl.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/jxsk.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--鏈烘鎵�--> + </div> + + + <!--杞﹂棿涔嬩笅鐨勮緤閬撶嚎--> + <div> + + <div class="box" style="height: 614px;"> + <div v-for="items in plcList_one.section_one" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + + </div> + <!--杞﹂棿涔嬩笅鐨勮緤閬撶嚎--> + + + <!--涓嬫枡鍙f帴椹冲彴--> + <div style="margin-top: 510px;margin-left: 35px;"> + <div style="display: flex;" v-for="(items, inst) in dataList" :key="inst"> + <div class="x_div" v-for="(its, ins) in items" :key="ins" + :style="{ 'background-color': getBackgroundColor(its.enable, its.location_state), 'margin-left': ins === 0 ? '0px' : '15px' }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content + v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null"> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div>鐗╂枡绫诲瀷(鍥惧彿)锛� {{ its.stationType }}</div> + <div>鐐夊彿锛� {{ its.heatNumber }}</div> + <div style="width: 76px;">杞﹁疆SN鍙凤細{{ its.bindSN }}</div> + <div>閽㈠澂鍙凤細{{ its.billetID }}</div> + <div v-if="its.tray_type == 'SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + </template> + <template #content v-else> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div v-if="its.tray_type == 'SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + </template> + <div style="width: 55px;height: 55px;"> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" + v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null" /> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" + v-else-if="its.location_state == 'Stroge'"> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--涓嬫枡鍙f帴椹冲彴--> + </div> + </div> + + + <div> + <el-dialog v-model="isModalVisible" title="鏈轰俊鎭�"> + <div>Name: + <el-input v-model="dataFList[0].name" :disabled="true" style="width: 100px;"> </el-input> + </div> + + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 30%;"> + <p>power on + <div class="div_cl" v-if="dataFList[0].power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="dataFList[0].ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="dataFList[0].ready_for_Auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state JOG + <div class="div_cl" v-if="dataFList[0].state_JOG == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state MDA + <div class="div_cl" v-if="dataFList[0].state_MDA == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state AUTO + <div class="div_cl" v-if="dataFList[0].state_AUTO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety doors closed + <div class="div_cl" v-if="dataFList[0].safetydoors_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>spindel running + <div class="div_cl" v-if="dataFList[0].spindel_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>coolant ready + <div class="div_cl" v-if="dataFList[0].coolant_ready_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>chip removal ready + <div class="div_cl" v-if="dataFList[0].coolant_ready_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>communication IO + <div class="div_cl" v-if="dataFList[0].kommunikation_IO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>emergency stop + <div class="div_cl" v-if="dataFList[0].emergency_Stop_machine == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>hydraulic fault + <div class="div_cl" v-if="dataFList[0].hydraulik_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>feed drive fault + <div class="div_cl" v-if="dataFList[0].feeddrive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>main drive fault + <div class="div_cl" v-if="dataFList[0].maindrive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>machine fault + <div class="div_cl" v-if="dataFList[0].machine_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>coolant fault + <div class="div_cl" v-if="dataFList[0].coolant_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>chip removalfault + <div class="div_cl" v-if="dataFList[0].chipremoval_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown repair + <div class="div_cl" v-if="dataFList[0].breakdown_repair == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown mainten + <div class="div_cl" v-if="dataFList[0].breakdown_maintenance == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown tool change + <div class="div_cl" v-if="dataFList[0].breakdown_Toolchange == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown changeover + <div class="div_cl" v-if="dataFList[0].breakdown_changeover == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>program running + <div class="div_cl" v-if="dataFList[0].programm_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>prog sel side 1 + <div class="div_cl" v-if="dataFList[0].prog_sel_side_1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>prog sel side 2 + <div class="div_cl" v-if="dataFList[0].prog_sel_side_2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program side 1 finished + <div class="div_cl" v-if="dataFList[0].programm_side_1_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>load side 1 finished + <div class="div_cl" v-if="dataFList[0].load_side_1_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program side 2 finished + <div class="div_cl" v-if="dataFList[0].programm_side_2_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>load side 2 finished + <div class="div_cl" v-if="dataFList[0].load_side_2_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>tool change magazine 1 + <div class="div_cl" v-if="dataFList[0].toolchange_magazine_1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>tool change magazine 2 + <div class="div_cl" v-if="dataFList[0].toolchange_magazine_2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + <!--绗竴鍒梔iv--> + <div style="border-bottom: 1px solid grey;height: 1px;margin-top: 3px;"></div> + <div style="display: flex;margin-top: 1px;"> + <div style="width: 40%;"> + <p style="display: flex;"><div style="width: 180px">changed tool mag 1</div> + <el-input v-model="dataFList[0].changed_tool_mag_1" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 140px">dupl tool mag 1</div> + <el-input v-model="dataFList[0].dupl_tool_mag_1" :disabled="true" style="width: 100px;margin-left: 40px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">changed tool mag 2</div> + <el-input v-model="dataFList[0].changed_tool_mag_2" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">dupl tool mag 2</div> + <el-input v-model="dataFList[0].dupl_tool_mag_2" :disabled="true" style="width: 100px;"> + </el-input> + </p> + </div> + <div style="width: 40%;margin-left: 40px;"> + <p style="display: flex;"><div style="width: 140px">mart type</div> + <el-input v-model="dataFList[0].parttype" :disabled="true" style="width: 100px;" class="div_inp"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">part counter</div> + <el-input v-model="dataFList[0].partcounter" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">operator id</div> + <el-input v-model="dataFList[0].operator_ID" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">machine state</div> + <el-input v-model="dataFList[0].machine_state" :disabled="true" style="width: 100px;"> + </el-input> + </p> + </div> + </div> + </div> + <!--鏈�澶iv--> + </el-dialog> + </div> +</template> + +<script> +import axios from 'axios'; + +export default { + props: { + dataList: { + type: Array, + required: true + }, + plcList_one: { + type: Array, + required: true + } + }, + + data() { + return { + isModalVisible: false, + isModalVisible2: false, + isModalVisible3: false, + dataFList: [] + }; + }, + mounted() { + + }, + methods: { + open(staname) { + this.http.get('api/Readplc/Four_unit_plc?staname=' + staname).then(x => { + this.dataFList = x; + + this.isModalVisible = true; + }) + .catch(error => { + console.error('璇锋眰鍑洪敊锛�', error); + }); + }, + getBackgroundColor4(vk_state){ + if(vk_state==1){ + return 'lightgreen'; + }else if(vk_state==2){ + return '#3c3ca5'; + }else if(vk_state>=10 && vk_state<=20){ + return '#cccc33'; + }else if(vk_state>20){ + return '#d53d3d'; + }else{ + return 'rgb(195 176 176)'; + } + }, + getBackgroundColor(enable, locationState) { + if (enable == '0') { + return '#C0C4CC'; + } + else { + switch (locationState) { + case 'Stroge': + return '#409eff'; + case 'Empty': + return 'lightgreen'; + case 'InBusy': + return 'yellow'; + case 'OutBusy': + return 'yellow'; + case 'Busy': + return 'yellow'; + case 'Abnormal': + return 'red'; + case 'Abnormal': + return 'yellow'; + default: + return 'transparent'; + } + } + + }, + getBackgroundColor2(r_wheel_SN) { + if (r_wheel_SN != '') { + return 'lightgreen'; + } + } + } +} +</script> + +<style> +.contents { + display: flex; + align-items: flex-end; +} + +.el-overlay-dialog { + top: -100px; +} + +.div_cl { + width: 30px; + height: 25px; + float: right; + background-color: greenyellow; + text-align: center; + padding-top: 5px; + +} + +.div_inp{ + margin-left: 40px; +} +.div_cl2 { + width: 30px; + height: 25px; + float: right; + background-color: darkgrey; + text-align: center; +} + +.box { + background-color: rgb(129, 179, 182); + width: 80px; + height: 405px; + margin-left: 3px; + color: rgb(255, 255, 255); + font-size: 16px; +} + +.box_sto { + width: 100%; + border: 1px solid #000000; + height: 45px; + background-image: url(../../../assets/lines.png); + background-size: 100%; + margin-top: 6px; + display: flex; + justify-content: center; + align-items: center; +} + +.box_sto_dt { + height: 17px; + text-align: center; + line-height: 17px; + margin-bottom: 3px; +} + +.vk_div { + height: 50px; + width: 50px; + margin-top: 300px; + margin-left: 120px; + border-radius: 10px; + +} + +.quan_div { + border: 1px solid #000000; + border-radius: 50px; + width: 30px; + height: 30px; + background-color: #818181; + margin-top: -3px; +} + +.box2_sto_baox { + width: 137px; + height: 45px; + background-color: rgb(129, 179, 182); + margin-left: 5px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + padding: 5px; + text-align: center +} + +.box_stoy { + width: 35px; + height: 35px; + background-color: rgb(129, 179, 182); + margin-left: 4px; + display: flex; + justify-content: center; + align-items: center; + text-align: center +} + +.box2_sto_yj { + width: 70px; + height: 70px; + margin-left: 5px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + padding: 5px; + text-align: center; + background-color: rgb(129, 179, 182); +} + +.x_div { + border: 1px solid #757373; + width: 57px; + height: 52px; +} +</style> \ No newline at end of file diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft2index.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft2index.vue" new file mode 100644 index 0000000..02d600c --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft2index.vue" @@ -0,0 +1,983 @@ +<template> + <div class="container"> + + <!--杞﹂棿涔嬩笂鐨勮緤閬撶嚎--> + <div class="box" style="margin-left: 203px;"> + <div v-for="items in plcList_one.section_four" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if=" items.r_part_process !='0' "> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_part_process != '0'"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--杞﹂棿涔嬩笂鐨勮緤閬撶嚎--> + + <!--涓婅溅闂�--> + <div style="margin-top: -6px;margin-left: 58px;"> + <div style="display: flex;"> + <div style="margin-top: 67px;"> + <!--宸︿笂瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 2" v-on:click="open('Machine5')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--宸︿笂瑙掕溅闂�--> + + <!--杞﹂棿涓棿杞﹁疆--> + <div style="display: flex;margin-left: -19px;margin-top: 5px;"> + <!--闈犲乏杞﹁疆--> + <div style="display: flex;"> + <div v-for="items in plcList_one.section_six"> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲乏杞﹁疆--> + + <!--闈犲彸杞﹁疆--> + <div style="display: flex;margin-left: 5px;"> + <div v-for="items in plcList_one.section_seven"> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲彸杞﹁疆--> + </div> + <!--宸﹁溅闂翠腑闂磋溅杞�--> + + <!--宸︿笅瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 3" v-on:click="open('Machine6')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--宸︿笅瑙掕溅闂�--> + + </div> + <!--宸﹁溅闂�--> + + <!--涓婁腑涓嬮棿杈婇亾绾垮拰杞﹁疆鍦�--> + <div> + <!--涓婅溅闂翠腑闂磋緤閬�--> + <div class="box" style="height: 102px;"> + + <div v-for="items in plcList_one.section_three" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--涓婅溅闂翠腑闂磋緤閬�--> + + <!--涓嬭溅闂翠腑闂磋緤閬�--> + <div class="box" style="height: 102px;margin-top: 45px;"> + <div v-for="items in plcList_one.section_two" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--涓嬭溅闂翠腑闂磋緤閬�--> + </div> + <!--涓婅溅闂磋緤閬撶嚎--> + + + <!--鍙宠溅闂�--> + <div> + <!--鏈烘鎵�--> + <div style="margin-left: 30px;margin-top: -35px;" v-for="items in plcList_one.section_ten" v-on:click="isModalVisible2 = true" + > + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !==''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box2_sto_yj" :style="{ 'background-color': getBackgroundColor4(items.g_gantry_state) }"> + <img src="../../../assets/imgs/jxscl.png" style="width: 100%;" v-if="items.r_wheel_SN !=''"> + <img src="../../../assets/imgs/jxsk.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + <el-dialog v-model="isModalVisible2" title="鏈烘鎵�"> + <div>Name: + <el-input v-model="items.g_name" :disabled="true" style="width: 100px;"> + </el-input> + </div> + + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 40%;"> + <p>power on + <div class="div_cl" v-if="items.g_power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="items.g_ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="items.g_ready_for_auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state JOG + <div class="div_cl" v-if="items.g_state_JOG == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state MDA + <div class="div_cl" v-if="items.g_state_MDA == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state AUTO + <div class="div_cl" v-if="items.g_state_AUTO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>communication IO + <div class="div_cl" v-if="items.g_communication_IO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 40%;margin-left: 40px;"> + <p>emergency stop + <div class="div_cl" v-if="items.g_emergency_stop_portal == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>drive fault + <div class="div_cl" v-if="items.g_drive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>portal fault + <div class="div_cl" v-if="items.g_portal_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program running + <div class="div_cl" v-if="items.g_programm_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + </div> + </el-dialog> + </div> + <!--鏈烘鎵�--> + <div style="height: 30px;"></div> + <!--鍙充笂瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 0" v-on:click="open('Machine7')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--鍙充笂瑙掕溅闂�--> + + + <!--鍙宠溅闂翠腑闂磋溅杞�--> + <div style="display: flex;margin-top: 5px;"> + + <!--闈犲乏杞﹁疆--> + <div style="display: flex;"> + <div v-for="items in plcList_one.section_eight"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲乏杞﹁疆--> + + <!--闈犲彸杞﹁疆--> + <div style="display: flex;margin-left: 5px;"> + <div v-for="items in plcList_one.section_nine"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲彸杞﹁疆--> + </div> + <!--鍙宠溅闂翠腑闂磋溅杞�--> + + <!--鍙充笅瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 1" v-on:click="open('Machine8')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN !=''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--鍙充笅瑙掕溅闂�--> + + </div> + <!--鍙宠溅闂�--> + + + </div> + </div> + <!--涓婅溅闂�--> + + + <div style="display: flex;margin-top: -6px;"> + + <div style="position: relative;width: 200px;"> + <!--瑙嗚妫�娴�1--> + <div style="position: absolute; bottom: 140px; right: 140px;" v-for="items in plcList_one.section_thirteen" :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !=''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div style="border: 1px solid #ffffff; width: 45px; height: 42px; "> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" v-if="items.r_wheel_SN !=''"> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--瑙嗚妫�娴�1--> + <!--瑙嗚妫�娴�2--> + <div style="position: absolute; bottom: 140px; right: 80px;" v-for="items in plcList_one.section_fourteen" :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !=''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div style="border: 1px solid #ffffff; width: 45px; height: 42px; "> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" v-if="items.r_wheel_SN !=''"> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--瑙嗚妫�娴�2--> + <!--娑傛补鏈�--> + <div style="position: absolute; bottom: 140px; right: 20px;" v-for="items in plcList_one.section_eleven" :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !=''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div style="border: 1px solid #ffffff; width: 45px; height: 67px; "> + <img src="../../../assets/imgs/tuyoujilun.png" style="width: 100%;" v-if="items.r_wheel_SN !=''"> + <img src="../../../assets/imgs/tuyouji.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--娑傛补鏈�--> + + <!--鏈烘鎵�--> + <div style="position: absolute; bottom: 50px; right: 20px;" v-for="items in plcList_one.section_twelve"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !==''"> + <div >r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box2_sto_yj"> + <img src="../../../assets/imgs/jxscl.png" style="width: 100%;" v-if="items.r_wheel_SN !=''"> + <img src="../../../assets/imgs/jxsk.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--鏈烘鎵�--> + </div> + + + <!--杞﹂棿涔嬩笅鐨勮緤閬撶嚎--> + <div> + + <div class="box" style="height: 614px;"> + <div v-for="items in plcList_one.section_one" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + + </div> + <!--杞﹂棿涔嬩笅鐨勮緤閬撶嚎--> + + <!--涓嬫枡路鍙�--> + <div style="margin-top: 510px;margin-left: 35px;"> + <div style="display: flex;"> + <div style="display: flex;" v-for="(items, inst) in dataList" :key="inst"> + <div class="x_div" v-for="(its, ins) in items" :key="ins" + :style="{ 'background-color': getBackgroundColor(its.enable, its.location_state), 'margin-left': ins === 0 ? '0px' : '15px' }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content + v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null"> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div>鐗╂枡绫诲瀷(鍥惧彿)锛� {{ its.stationType }}</div> + <div>鐐夊彿锛� {{ its.heatNumber }}</div> + <div style="width: 76px;">杞﹁疆SN鍙凤細{{ its.bindSN }}</div> + <div>閽㈠澂鍙凤細{{ its.billetID }}</div> + <div v-if="its.tray_type == 'SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + </template> + <template #content v-else> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div v-if="its.tray_type == 'SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + </template> + <div style="width: 55px;height: 55px;"> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null" /> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" v-else-if="its.location_state=='Stroge'"> + </div> + </el-tooltip> + </div> + </div> + </div> + </div> + + <!--涓嬫枡鍙�--> + </div> + </div> + <div> + <el-dialog v-model="isModalVisible" title="鏈轰俊鎭�"> + <div>Name: + <el-input v-model="dataFList[0].name" :disabled="true" style="width: 100px;"> </el-input> + </div> + + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 30%;"> + <p>power on + <div class="div_cl" v-if="dataFList[0].power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="dataFList[0].ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="dataFList[0].ready_for_Auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state JOG + <div class="div_cl" v-if="dataFList[0].state_JOG == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state MDA + <div class="div_cl" v-if="dataFList[0].state_MDA == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state AUTO + <div class="div_cl" v-if="dataFList[0].state_AUTO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety doors closed + <div class="div_cl" v-if="dataFList[0].safetydoors_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>spindel running + <div class="div_cl" v-if="dataFList[0].spindel_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>coolant ready + <div class="div_cl" v-if="dataFList[0].coolant_ready_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>chip removal ready + <div class="div_cl" v-if="dataFList[0].coolant_ready_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>communication IO + <div class="div_cl" v-if="dataFList[0].kommunikation_IO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>emergency stop + <div class="div_cl" v-if="dataFList[0].emergency_Stop_machine == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>hydraulic fault + <div class="div_cl" v-if="dataFList[0].hydraulik_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>feed drive fault + <div class="div_cl" v-if="dataFList[0].feeddrive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>main drive fault + <div class="div_cl" v-if="dataFList[0].maindrive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>machine fault + <div class="div_cl" v-if="dataFList[0].machine_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>coolant fault + <div class="div_cl" v-if="dataFList[0].coolant_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>chip removalfault + <div class="div_cl" v-if="dataFList[0].chipremoval_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown repair + <div class="div_cl" v-if="dataFList[0].breakdown_repair == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown mainten + <div class="div_cl" v-if="dataFList[0].breakdown_maintenance == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown tool change + <div class="div_cl" v-if="dataFList[0].breakdown_Toolchange == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown changeover + <div class="div_cl" v-if="dataFList[0].breakdown_changeover == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>program running + <div class="div_cl" v-if="dataFList[0].programm_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>prog sel side 1 + <div class="div_cl" v-if="dataFList[0].prog_sel_side_1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>prog sel side 2 + <div class="div_cl" v-if="dataFList[0].prog_sel_side_2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program side 1 finished + <div class="div_cl" v-if="dataFList[0].programm_side_1_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>load side 1 finished + <div class="div_cl" v-if="dataFList[0].load_side_1_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program side 2 finished + <div class="div_cl" v-if="dataFList[0].programm_side_2_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>load side 2 finished + <div class="div_cl" v-if="dataFList[0].load_side_2_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>tool change magazine 1 + <div class="div_cl" v-if="dataFList[0].toolchange_magazine_1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>tool change magazine 2 + <div class="div_cl" v-if="dataFList[0].toolchange_magazine_2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + <!--绗竴鍒梔iv--> + <div style="border-bottom: 1px solid grey;height: 1px;margin-top: 3px;"></div> + <div style="display: flex;margin-top: 1px;"> + <div style="width: 40%;"> + <p style="display: flex;"><div style="width: 180px">changed tool mag 1</div> + <el-input v-model="dataFList[0].changed_tool_mag_1" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 140px">dupl tool mag 1</div> + <el-input v-model="dataFList[0].dupl_tool_mag_1" :disabled="true" style="width: 100px;margin-left: 40px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">changed tool mag 2</div> + <el-input v-model="dataFList[0].changed_tool_mag_2" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">dupl tool mag 2</div> + <el-input v-model="dataFList[0].dupl_tool_mag_2" :disabled="true" style="width: 100px;"> + </el-input> + </p> + </div> + <div style="width: 40%;margin-left: 40px;"> + <p style="display: flex;"><div style="width: 140px">mart type</div> + <el-input v-model="dataFList[0].parttype" :disabled="true" style="width: 100px;" class="div_inp"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">part counter</div> + <el-input v-model="dataFList[0].partcounter" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">operator id</div> + <el-input v-model="dataFList[0].operator_ID" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">machine state</div> + <el-input v-model="dataFList[0].machine_state" :disabled="true" style="width: 100px;"> + </el-input> + </p> + </div> + </div> + </div> + <!--鏈�澶iv--> + </el-dialog> + </div> +</template> + +<script> +import axios from 'axios'; + +export default { + props: { + dataList: { + type: Array, + required: true + }, + plcList_one: { + type: Array, + required: true + } + }, + watch: { + plcList_one(newVal, oldVal) { + console.log('er:', newVal); + } + }, + data() { + return { + isModalVisible: false, + isModalVisible2: false, + isModalVisible3: false, + dataFList: [] + }; + }, + mounted() { + + }, + methods: { + open(staname) { + this.http.get('api/Readplc/Four_unit_plc2?staname=' + staname).then(x => { + this.dataFList = x; + this.isModalVisible = true; + }) + .catch(error => { + console.error('璇锋眰鍑洪敊锛�', error); + }); + }, + getBackgroundColor(enable, locationState) { + if (enable == '0') { + return '#C0C4CC'; + } + else { + switch (locationState) { + case 'Stroge': + return '#409eff'; + case 'Empty': + return 'lightgreen'; + case 'InBusy': + return 'yellow'; + case 'OutBusy': + return 'yellow'; + case 'Busy': + return 'yellow'; + case 'Abnormal': + return 'red'; + case 'Abnormal': + return 'yellow'; + default: + return 'transparent'; + } + } + + }, + getBackgroundColor4(vk_state){ + if(vk_state==1){ + return 'lightgreen'; + }else if(vk_state==2){ + return '#3c3ca5'; + }else if(vk_state>=10 && vk_state<=20){ + return '#cccc33'; + }else if(vk_state>20){ + return '#d53d3d'; + }else{ + return 'rgb(195 176 176)'; + } + }, + getBackgroundColor2(r_wheel_SN) { + if (r_wheel_SN != '') { + return 'lightgreen'; + } + } + } +} +</script> + +<style> +.contents { + display: flex; + align-items: flex-end; +} + + +.box { + background-color: rgb(129, 179, 182); + width: 80px; + height: 405px; + margin-left: 3px; + color: rgb(255, 255, 255); + font-size: 16px; +} + +.box_sto { + width: 100%; + border: 1px solid #000000; + height: 45px; + background-image: url(../../../assets/lines.png); + background-size: 100%; + margin-top: 6px; + display: flex; + justify-content: center; + align-items: center; +} + +.box_sto_dt { + height: 17px; + text-align: center; + line-height: 17px; + margin-bottom: 3px; +} +.div_cl { + width: 30px; + height: 25px; + float: right; + background-color: greenyellow; + text-align: center; + padding-top: 5px; +} + +.div_inp{ + margin-left: 40px; +} +.div_cl2 { + width: 30px; + height: 25px; + float: right; + background-color: darkgrey; + text-align: center; +} + +.quan_div { + border: 1px solid #000000; + border-radius: 50px; + width: 30px; + height: 30px; + background-color: #818181; + margin-top: -3px; +} + +.box2_sto_baox { + width: 137px; + height: 45px; + background-color: rgb(129, 179, 182); + margin-left: 5px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + padding: 5px; + text-align: center +} + +.box_stoy { + width: 35px; + height: 35px; + background-color: rgb(129, 179, 182); + margin-left: 4px; + display: flex; + justify-content: center; + align-items: center; + text-align: center +} + +.box2_sto_yj { + width: 70px; + height: 70px; + margin-left: 5px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + padding: 5px; + text-align: center; + background-color: rgb(129, 179, 182); +} + +.x_div { + border: 1px solid #757373; + width: 57px; + height: 52px; +} + + +</style> \ No newline at end of file diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft3index.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft3index.vue" new file mode 100644 index 0000000..9a07461 --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/Homest/centerLeft3index.vue" @@ -0,0 +1,1135 @@ +<template> + <div class="container"> + + <!--杞﹂棿涔嬩笂鐨勮緤閬撶嚎--> + <div class="box" style="margin-left: 170px;"> + <div v-for="items in plcList_one.section_four" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_part_process != '0'"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_part_process != '0'"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--杞﹂棿涔嬩笂鐨勮緤閬撶嚎--> + + <!--涓婅溅闂�--> + <div style="margin-top: -6px;margin-left: 24px;"> + <div style="display: flex;"> + <div style="margin-top: 67px;"> + <!--宸︿笂瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 1" v-on:click="open('Machine9')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div style="width: 100px;">杞﹁疆SN鍙凤細{{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--宸︿笂瑙掕溅闂�--> + + <!--杞﹂棿涓棿杞﹁疆--> + <div style="display: flex;margin-left: 5px;margin-top: 5px;"> + <!--闈犲乏杞﹁疆--> + <div style="display: flex;"> + <div v-for="items in plcList_one.section_six"> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲乏杞﹁疆--> + + <!--闈犲彸杞﹁疆--> + <div style="display: flex;margin-left: 5px;"> + <div v-for="items in plcList_one.section_seven"> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲彸杞﹁疆--> + </div> + <!--宸﹁溅闂翠腑闂磋溅杞�--> + + <!--宸︿笅瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 2" v-on:click="open('Machine10')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--宸︿笅瑙掕溅闂�--> + + </div> + <!--宸﹁溅闂�--> + + <!--涓婁腑涓嬮棿杈婇亾绾垮拰杞﹁疆鍦�--> + <div> + <!--涓婅溅闂翠腑闂磋緤閬�--> + <div class="box" style="height: 102px;"> + + <div v-for="items in plcList_one.section_three" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--涓婅溅闂翠腑闂磋緤閬�--> + + <!--涓嬭溅闂翠腑闂磋緤閬�--> + <div class="box" style="height: 102px;margin-top: 45px;"> + <div v-for="items in plcList_one.section_two" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--涓嬭溅闂翠腑闂磋緤閬�--> + </div> + <!--涓婅溅闂磋緤閬撶嚎--> + + + <!--鍙宠溅闂�--> + <div> + <!--VK5--> + <div style="margin-left: 30px;margin-top: -200px;" v-for="items in plcList_one.section_fifteen"> + <div class="box2_sto_yj2" v-on:click="isModalVisible3 = true" :style="{ 'background-color': getBackgroundColor4(items.vk_state) }"> + <div style="text-align: center;line-height: 50px;">VK5</div> + <el-dialog v-model="isModalVisible3" title="VK5"> + <div>Name: + <el-input v-model="items.name" :disabled="true" style="width: 100px;"> </el-input> + </div> + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 30%;"> + <p>Power on + <div class="div_cl" v-if="items.power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="items.ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="items.ready_for_Auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>VK fault + <div class="div_cl" v-if="items.vK_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety ok + <div class="div_cl" v-if="items.safety_OK == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>state jog input B1 + <div class="div_cl" v-if="items.state_JOG_bag1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state auto input B1 + <div class="div_cl" v-if="items.state_AUTO_bag1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>input B1 fault + <div class="div_cl" v-if="items.bag_in_1_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state jog input B2 + <div class="div_cl" v-if="items.state_JOG_bag2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state auto input B2 + <div class="div_cl" v-if="items.state_AUTO_bag2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>input B2 fault + <div class="div_cl" v-if="items.bag_in_2_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + + <p>state jog output B1 + <div class="div_cl" v-if="items.state_JOG_bag3 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state auto output B1 + <div class="div_cl" v-if="items.state_AUTO_bag3 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>output B1 fault + <div class="div_cl" v-if="items.bag_out_1_Fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>safety door 1 closed + <div class="div_cl" v-if="items.safetydoor_1_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 2 closed + <div class="div_cl" v-if="items.safetydoor_2_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 3 closed + <div class="div_cl" v-if="items.safetydoor_3_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety door 4 closed + <div class="div_cl" v-if="items.safetydoor_4_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + + </div> + <!--鏈�澶iv--> + </el-dialog> + </div> + </div> + <!--VK5--> + + + <!--鏈烘鎵�--> + <div style="margin-left: 30px;margin-top: 115px;" v-for="items in plcList_one.section_ten" v-on:click="isModalVisible2 = true" + > + <div> + <div> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN !== ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box2_sto_yj" :style="{ 'background-color': getBackgroundColor4(items.g_gantry_state) }"> + <img src="../../../assets/imgs/jxscl.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/jxsk.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + <el-dialog v-model="isModalVisible2" title="鏈烘鎵�"> + <div>Name: + <el-input v-model="items.g_name" :disabled="true" style="width: 100px;"> + </el-input> + </div> + + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 40%;"> + <p>power on + <div class="div_cl" v-if="items.g_power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="items.g_ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="items.g_ready_for_auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state JOG + <div class="div_cl" v-if="items.g_state_JOG == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state MDA + <div class="div_cl" v-if="items.g_state_MDA == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state AUTO + <div class="div_cl" v-if="items.g_state_AUTO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>communication IO + <div class="div_cl" v-if="items.g_communication_IO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 40%;margin-left: 40px;"> + <p>emergency stop + <div class="div_cl" v-if="items.g_emergency_stop_portal == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>drive fault + <div class="div_cl" v-if="items.g_drive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>portal fault + <div class="div_cl" v-if="items.g_portal_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program running + <div class="div_cl" v-if="items.g_programm_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + </div> + </el-dialog> + </div> + <!--鏈烘鎵�--> + <div style="height: 30px;"></div> + <!--鍙充笂瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 3" v-on:click="open('Machine11')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--鍙充笂瑙掕溅闂�--> + + + <!--鍙宠溅闂翠腑闂磋溅杞�--> + <div style="display: flex;margin-top: 5px;"> + + <!--闈犲乏杞﹁疆--> + <div style="display: flex;"> + <div v-for="items in plcList_one.section_eight"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲乏杞﹁疆--> + + <!--闈犲彸杞﹁疆--> + <div style="display: flex;margin-left: 5px;"> + <div v-for="items in plcList_one.section_nine"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_stoy"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--闈犲彸杞﹁疆--> + </div> + <!--鍙宠溅闂翠腑闂磋溅杞�--> + + <!--鍙充笅瑙掕溅闂�--> + <div v-for="(items, index) in plcList_one.section_five"> + + <div class="box2_sto_baox" style="margin-top: 5px;" v-if="index === 0" v-on:click="open('Machine12')"> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + <div style="width: 100px;"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="quan_div" style="margin: 0px auto;" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </el-tooltip> + </div> + <div style="width: 40px;height: 43px;" :style="{ 'background-color': getBackgroundColor4(items.c_machine_state) }"></div> + </div> + </div> + <!--鍙充笅瑙掕溅闂�--> + + </div> + <!--鍙宠溅闂�--> + + + </div> + </div> + <!--涓婅溅闂�--> + + + <div style="display: flex;margin-top: -6px;"> + + <div style="position: relative;width: 165px;"> + + <!--娑傛补鏈�--> + <div style="position: absolute; bottom: 140px; right: 80px;" v-for="items in plcList_one.section_eleven" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div style="border: 1px solid #ffffff; width: 45px; height: 67px; "> + <img src="../../../assets/imgs/tuyoujilun.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/tuyouji.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--娑傛补鏈�--> + + <!--鏈烘鎵�--> + <div style="position: absolute; bottom: 60px; right: 20px;" + v-for="items in plcList_one.section_twelve"> + <div> + <div> + <el-tooltip class="item" effect="dark" placement="top"> + <template #content v-if="items.r_wheel_SN !== ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box2_sto_yj"> + <img src="../../../assets/imgs/jxscl.png" style="width: 100%;" + v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/jxsk.png" style="width: 100%;" v-else> + </div> + </el-tooltip> + </div> + </div> + </div> + <!--鏈烘鎵�--> + + <!--鎺ラ┏鍙�--> + <div style="position: absolute; bottom: 1px; right: 5px;display: flex;"> + <div style="display: flex;" v-for="(items, inst) in dataList[2]" :key="inst"> + <div class="jie_div" v-for="(its, ins) in items" :key="ins" + :style="{ 'background-color': getBackgroundColor(its.enable, its.location_state), 'margin-left': ins === 0 ? '0px' : '15px' }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content + v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null"> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div>鐗╂枡绫诲瀷(鍥惧彿)锛� {{ its.stationType }}</div> + <div>鐐夊彿锛� {{ its.heatNumber }}</div> + <div style="width: 76px;">杞﹁疆SN鍙凤細{{ its.bindSN }}</div> + <div>閽㈠澂鍙凤細{{ its.billetID }}</div> + <div v-if="its.tray_type == 'SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + </template> + <template #content v-else> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div v-if="its.tray_type == 'SmallTray'">鎵樼洏绫诲瀷锛氬皬鎵樼洏</div> + <div v-else>鎵樼洏绫诲瀷锛氬ぇ鎵樼洏</div> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + </template> + <div style="width: 57px;height: 52px;"> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" + v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null" /> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" + v-else-if="its.location_state == 'Stroge'"> + </div> + </el-tooltip> + </div> + </div> + + </div> + <!--鎺ラ┏鍙�--> + </div> + + + <!--杞﹂棿涔嬩笅鐨勮緤閬撶嚎--> + <div> + + <div class="box" style="height: 513px;"> + <div v-for="items in plcList_one.section_one" class="box_sto" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + + </div> + <!--杞﹂棿涔嬩笅鐨勮緤閬撶嚎--> + + <div style="margin-top: 355px;"> + <!--涓嬭溅闂翠腑闂磋緤閬�--> + <div class="box" style="height: 66px;display: flex;width: 200px;"> + <div v-for="items in plcList_one.section_thirteen" class="box_sto2" + :style="{ 'background-color': getBackgroundColor2(items.r_wheel_SN) }"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content v-if="items.r_wheel_SN != ''"> + <div>r_wheel_SN锛歿{ items.r_wheel_SN }}</div> + <div>r_wheel_type锛歿{ items.r_wheel_type }}</div> + <div>r_part_status锛歿{ items.r_part_status }}</div> + <div>r_part_process锛� {{ items.r_part_process }}</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <template #content v-else> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + <div>stackerNo:{{ items.stackerNo }}</div> + </template> + <div class="box_sto_dt"> + <div class="quan_div" v-if="items.r_wheel_SN != ''"> + <img src="../../../assets/imgs/pcs_lun.png" style="width: 100%;"> + </div> + <div v-else>{{ items.stackerNo }}</div> + </div> + </el-tooltip> + </div> + </div> + <!--涓嬭溅闂翠腑闂磋緤閬�--> + </div> + + <!--鎺ラ┏鍙�--> + <div style="margin-top: 510px;margin-left: -130px;display: flex;"> + + <div style="display: flex;" v-for="(items, inst) in dataList[3]" :key="inst"> + <div class="jie_div" v-for="(its, ins) in items" :key="ins" + :style="{ 'background-color': getBackgroundColor(its.enable, its.location_state), 'margin-left': ins === 0 ? '0px' : '15px' }"> + <el-tooltip class="item" effect="dark" placement="left"> + <template #content + v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null"> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div>鐗╂枡绫诲瀷(鍥惧彿)锛� {{ its.stationType }}</div> + <div>鐐夊彿锛� {{ its.heatNumber }}</div> + <div style="width: 76px;">杞﹁疆SN鍙凤細{{ its.bindSN }}</div> + <div>閽㈠澂鍙凤細{{ its.billetID }}</div> + </template> + <template #content v-else> + <div>搴撲綅缂栧彿锛歿{ its.stationCode }}</div> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + </template> + <div style="width: 57px;height: 52px;"> + <img src="../../../assets/imgs/huojialun.png" style="width: 100%;" + v-if="its.stationType !== '' && its.bindSN !== '' && its.stationType !== null && its.bindSN !== null" /> + <img src="../../../assets/imgs/huojia.png" style="width: 100%;" + v-else-if="its.location_state == 'Stroge'"> + </div> + </el-tooltip> + </div> + </div> + + </div> + <!--鎺ラ┏鍙�--> + </div> + </div> + + <div> + <el-dialog v-model="isModalVisible" title="鏈轰俊鎭�"> + <div>Name: + <el-input v-model="dataFList[0].name" :disabled="true" style="width: 100px;"> </el-input> + </div> + + <!--鏈�澶iv--> + <div> + <!--绗眰鍒梔iv--> + <div style="display: flex;"> + <div style="width: 30%;"> + <p>power on + <div class="div_cl" v-if="dataFList[0].power_on == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready operate + <div class="div_cl" v-if="dataFList[0].ready_for_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>ready auto start + <div class="div_cl" v-if="dataFList[0].ready_for_Auto_start == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state JOG + <div class="div_cl" v-if="dataFList[0].state_JOG == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state MDA + <div class="div_cl" v-if="dataFList[0].state_MDA == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>state AUTO + <div class="div_cl" v-if="dataFList[0].state_AUTO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>safety doors closed + <div class="div_cl" v-if="dataFList[0].safetydoors_closed == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>spindel running + <div class="div_cl" v-if="dataFList[0].spindel_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>coolant ready + <div class="div_cl" v-if="dataFList[0].coolant_ready_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>chip removal ready + <div class="div_cl" v-if="dataFList[0].coolant_ready_operate == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>communication IO + <div class="div_cl" v-if="dataFList[0].kommunikation_IO == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>emergency stop + <div class="div_cl" v-if="dataFList[0].emergency_Stop_machine == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>hydraulic fault + <div class="div_cl" v-if="dataFList[0].hydraulik_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>feed drive fault + <div class="div_cl" v-if="dataFList[0].feeddrive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>main drive fault + <div class="div_cl" v-if="dataFList[0].maindrive_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>machine fault + <div class="div_cl" v-if="dataFList[0].machine_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>coolant fault + <div class="div_cl" v-if="dataFList[0].coolant_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>chip removalfault + <div class="div_cl" v-if="dataFList[0].chipremoval_fault == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown repair + <div class="div_cl" v-if="dataFList[0].breakdown_repair == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown mainten + <div class="div_cl" v-if="dataFList[0].breakdown_maintenance == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown tool change + <div class="div_cl" v-if="dataFList[0].breakdown_Toolchange == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>breakdown changeover + <div class="div_cl" v-if="dataFList[0].breakdown_changeover == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + <div style="width: 30%;margin-left: 40px;"> + <p>program running + <div class="div_cl" v-if="dataFList[0].programm_running == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>prog sel side 1 + <div class="div_cl" v-if="dataFList[0].prog_sel_side_1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>prog sel side 2 + <div class="div_cl" v-if="dataFList[0].prog_sel_side_2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program side 1 finished + <div class="div_cl" v-if="dataFList[0].programm_side_1_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>load side 1 finished + <div class="div_cl" v-if="dataFList[0].load_side_1_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>program side 2 finished + <div class="div_cl" v-if="dataFList[0].programm_side_2_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>load side 2 finished + <div class="div_cl" v-if="dataFList[0].load_side_2_finished == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>tool change magazine 1 + <div class="div_cl" v-if="dataFList[0].toolchange_magazine_1 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + <p>tool change magazine 2 + <div class="div_cl" v-if="dataFList[0].toolchange_magazine_2 == true">1</div> + <div class="div_cl2" v-else>0</div> + </p> + </div> + </div> + <!--绗竴鍒梔iv--> + <div style="border-bottom: 1px solid grey;height: 1px;margin-top: 3px;"></div> + <div style="display: flex;margin-top: 1px;"> + <div style="width: 40%;"> + <p style="display: flex;"><div style="width: 180px">changed tool mag 1</div> + <el-input v-model="dataFList[0].changed_tool_mag_1" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 140px">dupl tool mag 1</div> + <el-input v-model="dataFList[0].dupl_tool_mag_1" :disabled="true" style="width: 100px;margin-left: 40px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">changed tool mag 2</div> + <el-input v-model="dataFList[0].changed_tool_mag_2" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">dupl tool mag 2</div> + <el-input v-model="dataFList[0].dupl_tool_mag_2" :disabled="true" style="width: 100px;"> + </el-input> + </p> + </div> + <div style="width: 40%;margin-left: 40px;"> + <p style="display: flex;"><div style="width: 140px">mart type</div> + <el-input v-model="dataFList[0].parttype" :disabled="true" style="width: 100px;" class="div_inp"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">part counter</div> + <el-input v-model="dataFList[0].partcounter" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">operator id</div> + <el-input v-model="dataFList[0].operator_ID" :disabled="true" style="width: 100px;"> + </el-input> + </p> + <p style="display: flex;"><div style="width: 180px">machine state</div> + <el-input v-model="dataFList[0].machine_state" :disabled="true" style="width: 100px;"> + </el-input> + </p> + </div> + </div> + </div> + <!--鏈�澶iv--> + </el-dialog> + </div> +</template> + +<script> +import axios from 'axios'; + +export default { + props: { + dataList: { + type: Array, + required: true + }, + plcList_one: { + type: Array, + required: true + } + }, + data() { + return { + isModalVisible: false, + isModalVisible2: false, + isModalVisible3: false, + dataFList: [] + }; + }, + mounted() { + }, + methods: { + open(staname) { + this.http.get('api/Readplc/Four_unit_plc3?staname=' + staname).then(x => { + this.dataFList = x; + this.isModalVisible = true; + }) + .catch(error => { + console.error('璇锋眰鍑洪敊锛�', error); + }); + }, + getBackgroundColor4(vk_state){ + if(vk_state==1){ + return 'lightgreen'; + }else if(vk_state==2){ + return '#3c3ca5'; + }else if(vk_state>=10 && vk_state<=20){ + return '#cccc33'; + }else if(vk_state>20){ + return '#d53d3d'; + }else{ + return 'rgb(195 176 176)'; + } + }, + getBackgroundColor(enable, locationState) { + if (enable == '0') { + return '#C0C4CC'; + } + else { + switch (locationState) { + case 'Stroge': + return '#409eff'; + case 'Empty': + return 'lightgreen'; + case 'InBusy': + return 'yellow'; + case 'OutBusy': + return 'yellow'; + case 'Busy': + return 'yellow'; + case 'Abnormal': + return 'red'; + case 'Abnormal': + return 'yellow'; + default: + return 'transparent'; + } + } + + }, + getBackgroundColor2(r_wheel_SN) { + if (r_wheel_SN != '') { + return 'lightgreen'; + } + } + } +} +</script> + +<style> +.contents { + display: flex; + align-items: flex-end; +} + + +.box { + background-color: rgb(129, 179, 182); + width: 80px; + height: 405px; + margin-left: 3px; + color: rgb(255, 255, 255); + font-size: 16px; +} + +.box_sto { + width: 100%; + border: 1px solid #000000; + height: 45px; + background-image: url(../../../assets/lines.png); + background-size: 100%; + margin-top: 6px; + display: flex; + justify-content: center; + align-items: center; +} + +.div_cl { + width: 30px; + height: 25px; + float: right; + background-color: greenyellow; + text-align: center; + padding-top: 5px; +} + +.div_inp{ + margin-left: 40px; +} +.div_cl2 { + width: 30px; + height: 25px; + float: right; + background-color: darkgrey; + text-align: center; + padding-top: 5px; +} +.box_sto2 { + width: 67px; + border: 1px solid #000000; + height: 65px; + background-image: url(../../../assets/linesd.png); + background-size: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.box_sto_dt { + height: 17px; + text-align: center; + line-height: 17px; + margin-bottom: 3px; +} + + +.quan_div { + border: 1px solid #000000; + border-radius: 50px; + width: 30px; + height: 30px; + background-color: #818181; + margin-top: -3px; +} + +.box2_sto_baox { + width: 137px; + height: 45px; + background-color: rgb(129, 179, 182); + margin-left: 5px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + padding: 5px; + text-align: center +} + +.box_stoy { + width: 35px; + height: 35px; + background-color: rgb(129, 179, 182); + margin-left: 4px; + display: flex; + justify-content: center; + align-items: center; + text-align: center +} + +.box2_sto_yj { + width: 70px; + height: 70px; + margin-left: 5px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + padding: 5px; + text-align: center; + background-color: rgb(129, 179, 182); +} + +.box2_sto_yj2 { + width: 50px; + height: 50px; + + margin-left: 5px; + border-radius: 10px; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; + padding: 5px; +} + +.x_div { + border: 1px solid #757373; + width: 57px; + height: 52px; +} + +.jie_div { + + width: 57px; + height: 52px; + color: #ffffff; +} + +.w_div { + height: 43px; + width: 40px; + margin: 5px auto; +} + +</style> \ No newline at end of file diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/centerLeft1.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/centerLeft1.vue" new file mode 100644 index 0000000..9f2077e --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/centerLeft1.vue" @@ -0,0 +1,77 @@ +<template> + <div class="contents"> + <!-- 涓�鍗曞厓 --> + <div class="cen_div"> + <centerLeft1index :dataList="dataList[0]" :plcList_one="plcList_one" /> + </div> + <!-- 涓�鍗曞厓 --> + + + <!-- 浜屽崟鍏� --> + <div class="cen_div"> + <centerLeft2index :dataList="dataList[1]" :plcList_one="plcList_two" /> + </div> + <!-- 浜屽崟鍏� --> + + + <!-- 涓夊崟鍏� --> + <div class="cen_div" > + <centerLeft3index :dataList="dataList" :plcList_one="plcList_three" /> + </div> + <!-- 涓夊崟鍏� --> + </div> +</template> + +<script> +import axios from 'axios'; +import centerLeft1index from '@/views/Homes/Homest/centerLeft1index.vue'; + import centerLeft2index from '@/views/Homes/Homest/centerLeft2index.vue'; + import centerLeft3index from '@/views/Homes/Homest/centerLeft3index.vue'; + +export default { + props: { + dataList: { + type: Array, + required: true + }, + plcList_one:{ + type: Array, + required: true + }, + plcList_two:{ + type: Array, + required: true + }, + plcList_three:{ + type: Array, + required: true + } + }, + data() { + return { + }; + }, + components: { + centerLeft1index, + centerLeft2index, + centerLeft3index, + }, + mounted() { + }, + methods: { + } +} +</script> + +<style> +.contents { + display: flex; + align-items: flex-end; +} +.cen_div{ + display: flex; + margin-top: 20px; +} + + +</style> \ No newline at end of file diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/centerLeft2.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/centerLeft2.vue" new file mode 100644 index 0000000..5d1793a --- /dev/null +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/Homes/centerLeft2.vue" @@ -0,0 +1,174 @@ +<template> + <div class="fixed-row"> + <span style="margin-left: 40px;font-size: 20px;"> + <el-button style="background-color: #409eff;color: #000;width: 70px;height: 50px;">鏈夎揣</el-button> + <el-button style="background-color: lightgreen;color: #000;width: 70px;height: 50px;">绌鸿揣浣�</el-button> + <el-button style="background-color: yellow;color: #000;width: 70px;height: 50px;">鍑哄叆搴撳崰鐢�</el-button> + <el-button style="background-color: red;color: #000;width: 70px;height: 50px;">寮傚父</el-button> + <el-button style="background-color: #C0C4CC;color: #000;width: 70px;height: 50px;">绂佺敤</el-button> + </span> + </div> + <div style="height: 60px;"> + + </div> + <div style="width: 1100px;"> + <!--澶栧崗鍖�--> + <div style="width: 100px;float: right;height: 180px;"> + <div v-for="(items, inst) in dataList[0].item1" :key="inst"> + <div> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content + v-if="items.stationType !== '' && items.stationType !== null && items.bindSN !== null"> + <div>搴撲綅缂栧彿锛歿{ items.stationCode }}</div> + <div>鐗╂枡绫诲瀷(鍥惧彿)锛� {{ items.stationType }}</div> + <div>鐐夊彿锛� {{ items.heatNumber }}</div> + <div style="width: 76px;">杞﹁疆SN鍙凤細{{ items.bindSN }}</div> + <div>閽㈠澂鍙凤細{{ items.billetID }}</div> + </template> + <template #content v-else> + <div>搴撲綅缂栧彿锛歿{ items.stationCode }}</div> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + + </template> + <div class="w_div" :style="{ 'background-color': getBackgroundColor(items.enable, items.location_state) }"> + </div> + </el-tooltip> + </div> + </div> + </div> + </div> + <div v-for="(item, inst) in dataList" :key="inst" :style="{ 'margin-left': getmargin(inst) }" v-if="inst !=='1'"> + <div class="table-container"> + <div class="scrollable-table"> + <table class="one_tal" > + <tr v-if="inst !== 1 && inst !== 0" v-for="(item, k) in dataList[inst].item2" :key="k"> + <td v-for="items in filteredItems(dataList[inst].item1, k+1)" :key="items.stationCode" + :style="{ 'background-color': getBackgroundColor(items.enable,items.location_state) }"> + <el-tooltip class="item" effect="dark" placement="right"> + <template #content + v-if="items.stationType!=='' && items.stationType!==null && items.bindSN !== null"> + <div>搴撲綅缂栧彿锛歿{ items.stationCode }}</div> + <div>鐗╂枡绫诲瀷(鍥惧彿)锛� {{ items.stationType }}</div> + <div>鐐夊彿锛� {{ items.heatNumber }}</div> + <div style="width: 76px;">杞﹁疆SN鍙凤細{{ items.bindSN }}</div> + <div>閽㈠澂鍙凤細{{ items.billetID }}</div> + </template> + <template #content v-else> + <div>搴撲綅缂栧彿锛歿{ items.stationCode }}</div> + <div>鐩墠鏆傛棤杞﹁疆淇℃伅</div> + </template> + <div style="height: 20px;writing-mode: vertical-lr;" :style="{ 'width': getwidth(inst) }"></div> + </el-tooltip> + </td> + </tr> + </table> + </div> + </div> + </div> +</template> + +<script> +import axios from 'axios'; + +export default { + props: { + dataList: { + type: Array, + required: true + } + }, + data() { + return { + visible: false, + }; + }, + methods: { + getmargin(inst){ + if(inst =="2"){ + return '190px'; + } + }, + getwidth(inst){ + if(inst =="4"){ + return '23px'; + }else{ + return '20px'; + } + }, + getBackgroundColor(enable,locationState) { + if (enable=='0') { + return '#C0C4CC'; + } + else{ + switch (locationState) { + case 'Stroge': + return '#409eff'; + case 'Empty': + return 'lightgreen'; + case 'InBusy': + return 'yellow'; + case 'OutBusy': + return 'yellow'; + case 'Busy': + return 'yellow'; + case 'Abnormal': + return 'red'; + case 'Abnormal': + return 'yellow'; + default: + return 'transparent'; + } + } + + } + }, + mounted() { + }, + computed: { + filteredItems() { + return (itemList, line) => { + return itemList.filter(item => item.line === line); + }; + } + } +}; +</script> + +<style scoped> +.scrollable-table { + width: 100%; +} + +.one_tal { + padding-right: 100px; +} + +.one_tal tr { + margin-top: 5px; + margin-bottom: 5px; +} +.w_div{ + height: 20px; + width: 20px; + margin-top: 4px; +} +.one_tal td { + background-color: rgb(36, 227, 241); + text-align: center; + +} + +.table-container::-webkit-scrollbar { + width: 1px; + height: 15px; +} + + + +.fixed-row { + position: fixed; + width: 100%; + + z-index: 3; +} +</style> \ No newline at end of file diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs" index d49784a..8bb61cc 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/ReadplcController.cs" @@ -1,5 +1,7 @@ 锘縰sing Microsoft.AspNetCore.Mvc; +using System.Collections.Generic; using System.Linq; +using WIDESEA_Comm; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.Extensions; using WIDESEA_WCS.IRepositories; @@ -13,6 +15,487 @@ [ApiController] public class ReadplcController : Controller { + #region PCS骞抽潰鍥� + public class SectionData //姝诲弬鏁� + { + public int r_direction { get; set; } + public bool r_machine_nr { get; set; } + public int r_part_process { get; set; } + public int r_part_status { get; set; } + public string r_wheel_SN { get; set; } + public int r_wheel_type { get; set; } + public string stackerNo { get; set; } + } + + #region 杈婇亾1 + [HttpPost("One_unit_plc")] + public IActionResult One_unit_plc() + { + var DBIems = WheelDBItem.VK4WheelDBItem; //鑾峰彇杈婇亾锛岃緭閫佺嚎淇℃伅 + var DBIems2 = VKDBItem.VK4DBItem; //VK4鐘舵�佷俊鎭璞¢泦鍚� + var DBIems3 = GantryDBItem.VK4GantryDBItem.Where(x => x.Name == "Gantry1").FirstOrDefault(); // VK4妗佹灦鏈烘鎵嬪璞¢泦鍚� + + + + var Section_one = DBIems.Where(x => IsInRange(x.StackerNo, 4, 13, 4, 24)).ToList(); + var Section_two = DBIems.Where(x => IsInRange(x.StackerNo, 4, 11, 4, 12)).ToList(); + var Section_three = DBIems.Where(x => IsInRange(x.StackerNo, 4, 9, 4, 10)).ToList(); + var Section_four = DBIems.Where(x => IsInRange(x.StackerNo, 4, 1, 4, 8)).ToList(); + + + var Section_six = DBIems.Where(x => IsInRange(x.StackerNo, 10, 1, 10, 2)).ToList(); //10.1-10.2 + var Section_seven = DBIems.Where(x => IsInRange(x.StackerNo, 10, 3, 10, 4)).ToList(); //10.3-10.4 + var Section_eight = DBIems.Where(x => IsInRange(x.StackerNo, 10, 7, 10, 8)).ToList(); //10.7-10.8 + var Section_nine = DBIems.Where(x => IsInRange(x.StackerNo, 10, 9, 10, 10)).OrderByDescending(x => x.StackerNo).ToList(); //10.9-10.10 + + + + #region + + //var Section_five = DBIems.Where(x => IsInRange(x.StackerNo, 10, 5, 10, 6) || IsInRange(x.StackerNo, 10, 11, 10, 12)).ToList(); + + var Section_five = DBIems + .Where(x => IsInRange(x.StackerNo, 10, 5, 10, 6) || IsInRange(x.StackerNo, 10, 11, 10, 12)) + .Select(x => CreateSectionFiveItem(x)) + .ToList(); + #endregion + + + + + + //鑰佹満姊版墜 + var Section_ten = DBIems.Where(x => x.StackerNo == "鏈烘鎵�1") + .Select(x => new + { + stackerNo = x.StackerNo, + r_wheel_SN = x.R_wheel_SN, + r_wheel_type = x.R_wheel_type, + r_part_status = x.R_part_status, + r_part_process = x.R_part_process, + g_name = DBIems3.Name, + g_communication_IO = DBIems3.communication_IO, + g_drive_fault = DBIems3.drive_fault, + g_emergency_stop_portal = DBIems3.emergency_stop_portal, + g_gantry_state = DBIems3.gantry_state, + g_portal_fault = DBIems3.portal_fault, + g_power_on = DBIems3.power_on, + g_programm_running = DBIems3.programm_running, + g_ready_for_auto_start = DBIems3.ready_for_auto_start, + g_ready_for_operate = DBIems3.ready_for_operate, + g_state_AUTO = DBIems3.state_AUTO, + g_state_JOG = DBIems3.state_JOG, + g_state_MDA = DBIems3.state_MDA, + + }) + .ToList(); + + + + //鏂版満姊版墜锛堜笅鏂欏彛浣嶏級 + var Section_twelve = DBIems.Where(x => x.StackerNo == "鏈烘鎵�1") + .Select(x => new + { + stackerNo = x.StackerNo, + r_wheel_SN = x.R_wheel_SN, + r_wheel_type = x.R_wheel_type, + r_part_status = x.R_part_status, + r_part_process = x.R_part_process, + + + + }) + .ToList(); + + + List<SectionData> sectDataList7 = new List<SectionData>(); + var seDataList7 = new SectionData + { + r_direction = 0, + r_machine_nr = false, + r_part_process = 1, //璇诲彇杞﹁疆闆朵欢宸ヨ壓 + r_part_status = 0, //璇诲彇杞﹁疆闆朵欢鐘舵�� + r_wheel_SN = "2222", + r_wheel_type = 3, //璇诲彇杞﹁疆绫诲瀷 + stackerNo = "10.12", + + }; + sectDataList7.Add(seDataList7); + + var Section_eleven = sectDataList7.ToList(); + + var Section_thirteen = DBIems.Where(x => x.StackerNo == "4.11").ToList(); //瑙嗚妫�娴嬪彴 + var Section_fourteen = DBIems.Where(x => x.StackerNo == "4.12").ToList(); //瑙嗚妫�娴嬪彴 + + var Section_fifteen = DBIems2.ToList(); + + var data = new + { + Section_one, + Section_two, + Section_three, + Section_four, + Section_five, + Section_six, + Section_seven, + Section_eight, + Section_nine, + Section_ten, //鑰佹満姊版墜 + Section_eleven, //娑傛补鏈� + Section_twelve, //鏂版満姊版墜 + Section_thirteen, //鏈�宸﹁竟 + Section_fourteen, //绗簩涓潬娑傛补鏈� + Section_fifteen //VK4淇℃伅 + + }; + + return Ok(data); + } + + private object CreateSectionFiveItem(WheelDBItem x) + { + var stackerToMachineMap = new Dictionary<string, string> + { + { "10.5", "Machine1" }, + { "10.6", "Machine2" }, + { "10.11", "Machine3" }, + { "10.12", "Machine4" } + }; + var machineDataLookup = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == "Machine1" || x.Name == "Machine2" || x.Name == "Machine3" || x.Name == "Machine4").ToDictionary(x => x.Name, x => x); //VK4鏈哄簥瀵硅薄闆嗗悎 + if (stackerToMachineMap.TryGetValue(x.StackerNo, out var machineName) && machineDataLookup.TryGetValue(machineName, out var machineData)) + { + return new + { + stackerNo = x.StackerNo, + r_wheel_SN = x.R_wheel_SN, + r_wheel_type = x.R_wheel_type, + r_part_status = x.R_part_status, + r_part_process = x.R_part_process, + c_machine_state = machineData.machine_state, + + }; + } + else + { + return new + { + StackerNo = (string)null, + + }; + } + } + + [HttpGet("Four_unit_plc")] + public IActionResult Four_unit_plc(string staname) + { + var data = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == staname).ToList(); + + return Ok(data); + } + #endregion + + #region 杈婇亾2 + [HttpPost("Two_unit_plc")] + public IActionResult Two_unit_plc() + { + var DBIems = WheelDBItem.VK4WheelDBItem; + var DBIems3 = GantryDBItem.VK4GantryDBItem.Where(x => x.Name == "Gantry2").FirstOrDefault(); + + List<SectionData> DataList2 = new List<SectionData>(); + var Section_one = DBIems.Where(x => IsInRange(x.StackerNo, 5, 13, 5, 24)).ToList(); + var Section_two = DBIems.Where(x => IsInRange(x.StackerNo, 5, 11, 5, 12)).ToList(); + var Section_three = DBIems.Where(x => IsInRange(x.StackerNo, 5, 9, 5, 10)).ToList(); + var Section_four = DBIems.Where(x => IsInRange(x.StackerNo, 5, 1, 5, 8)).ToList(); + + + #region + + //var Section_five = DBIems.Where(x => IsInRange(x.StackerNo, 20, 5, 20, 6) || IsInRange(x.StackerNo, 20, 11, 20, 12)).ToList(); //杞﹂棿 + + var Section_five = DBIems + .Where(x => IsInRange(x.StackerNo, 20, 5, 20, 6) || IsInRange(x.StackerNo, 20, 11, 20, 12)) + .Select(x => CreateSectionFiveItem2(x)) + .ToList(); + #endregion + + + var Section_six = DBIems.Where(x => IsInRange(x.StackerNo, 20, 1, 20, 2)).ToList(); //10.1-10.2 + var Section_seven = DBIems.Where(x => IsInRange(x.StackerNo, 20, 3, 20, 4)).ToList(); //10.3-10.4 + var Section_eight = DBIems.Where(x => IsInRange(x.StackerNo, 20, 7, 20, 8)).ToList(); //10.7-10.8 + var Section_nine = DBIems.Where(x => IsInRange(x.StackerNo, 20, 9, 20, 10)).OrderByDescending(x => x.StackerNo).ToList(); //10.9-10.10 + + //鑰佹満姊版墜锛堟満搴婁綅锛� + var Section_ten = DBIems.Where(x => x.StackerNo == "鏈烘鎵�2") + .Select(x => new + { + stackerNo = x.StackerNo, + r_wheel_SN = x.R_wheel_SN, + r_wheel_type = x.R_wheel_type, + r_part_status = x.R_part_status, + r_part_process = x.R_part_process, + g_name = DBIems3.Name, + g_communication_IO = DBIems3.communication_IO, + g_drive_fault = DBIems3.drive_fault, + g_emergency_stop_portal = DBIems3.emergency_stop_portal, + g_gantry_state = DBIems3.gantry_state, + g_portal_fault = DBIems3.portal_fault, + g_power_on = DBIems3.power_on, + g_programm_running = DBIems3.programm_running, + g_ready_for_auto_start = DBIems3.ready_for_auto_start, + g_ready_for_operate = DBIems3.ready_for_operate, + g_state_AUTO = DBIems3.state_AUTO, + g_state_JOG = DBIems3.state_JOG, + g_state_MDA = DBIems3.state_MDA, + + }) + .ToList(); + + + var Section_twelve = DBIems.Where(x => x.StackerNo == "鏈烘鎵�2").ToList(); //鏂版満姊版墜锛堜笅鏂欏彛浣嶏級 + + + List<SectionData> sectDataList7 = new List<SectionData>(); + var seDataList7 = new SectionData + { + r_direction = 0, + r_machine_nr = false, + r_part_process = 1, //璇诲彇杞﹁疆闆朵欢宸ヨ壓 + r_part_status = 0, //璇诲彇杞﹁疆闆朵欢鐘舵�� + r_wheel_SN = "2222", + r_wheel_type = 3, //璇诲彇杞﹁疆绫诲瀷 + stackerNo = "20.12", + + }; + sectDataList7.Add(seDataList7); + + var Section_eleven = sectDataList7.ToList(); //娑傛补鏈� + + var Section_thirteen = DBIems.Where(x => x.StackerNo == "5.11").ToList(); //瑙嗚妫�娴嬪彴 + var Section_fourteen = DBIems.Where(x => x.StackerNo == "5.12").ToList(); //瑙嗚妫�娴嬪彴 + + var data = new + { + Section_one, + Section_two, + Section_three, + Section_four, + Section_five, + Section_six, + Section_seven, + Section_eight, + Section_nine, + Section_ten, + Section_eleven, + Section_twelve, + Section_thirteen, + Section_fourteen + + }; + + return Ok(data); + } + + private object CreateSectionFiveItem2(WheelDBItem x) + { + var stackerToMachineMap = new Dictionary<string, string> + { + { "20.5", "Machine5" }, + { "20.6", "Machine6" }, + { "20.11", "Machine7" }, + { "20.12", "Machine8" } + }; + var machineDataLookup = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == "Machine5" || x.Name == "Machine6" || x.Name == "Machine7" || x.Name == "Machine8").ToDictionary(x => x.Name, x => x); //VK4鏈哄簥瀵硅薄闆嗗悎 + if (stackerToMachineMap.TryGetValue(x.StackerNo, out var machineName) && machineDataLookup.TryGetValue(machineName, out var machineData)) + { + return new + { + stackerNo = x.StackerNo, + r_wheel_SN = x.R_wheel_SN, + r_wheel_type = x.R_wheel_type, + r_part_status = x.R_part_status, + r_part_process = x.R_part_process, + c_machine_state = machineData.machine_state, + + }; + } + else + { + return new + { + StackerNo = (string)null, + + }; + } + } + + [HttpGet("Four_unit_plc2")] + public IActionResult Four_unit_plc2(string staname) + { + var data = MachineDBItem.VK4MachineDBItem.Where(x => x.Name == staname).ToList(); + + return Ok(data); + } + #endregion + + + + #region 杈婇亾3 + [HttpPost("Three_unit_plc")] + public IActionResult Three_unit_plc() + { + + var DBIems = WheelDBItem.VK5WheelDBItem; + var DBIems2 = VKDBItem.VK5DBItem; //VK4鐘舵�佷俊鎭璞¢泦鍚� + var DBIems3 = GantryDBItem.VK5GantryDBItem.Where(x => x.Name == "Gantry3").FirstOrDefault(); + var Section_one = DBIems.Where(x => IsInRange(x.StackerNo, 6, 13, 6, 20) || x.StackerNo == "6.24" || x.StackerNo == "7.21").ToList(); + var Section_two = DBIems.Where(x => IsInRange(x.StackerNo, 6, 11, 6, 12)).ToList(); + var Section_three = DBIems.Where(x => IsInRange(x.StackerNo, 6, 9, 6, 10)).ToList(); + var Section_four = DBIems.Where(x => IsInRange(x.StackerNo, 6, 1, 6, 8)).ToList(); + var Section_thirteen = DBIems.Where(x => IsInRange(x.StackerNo, 6, 21, 6, 23)).ToList(); + + //杞﹂棿 + #region + + //var Section_five = DBIems.Where(x => IsInRange(x.StackerNo, 30, 4, 30, 5) || IsInRange(x.StackerNo, 30, 9, 30, 10)).ToList(); //杞﹂棿 + + var Section_five = DBIems + .Where(x => IsInRange(x.StackerNo, 30, 4, 30, 5) || IsInRange(x.StackerNo, 30, 9, 30, 10)) + .Select(x => CreateSectionFiveItem3(x)) + .ToList(); + #endregion + + + var Section_six = DBIems.Where(x => x.StackerNo == "30.1").ToList(); //30.7 + var Section_seven = DBIems.Where(x => IsInRange(x.StackerNo, 30, 2, 30, 3)).ToList(); //30.2-30.3 + var Section_eight = DBIems.Where(x => x.StackerNo == "30.6").ToList(); //30.6 + var Section_nine = DBIems.Where(x => IsInRange(x.StackerNo, 30, 7, 30, 8)).ToList(); //30.7-30.8 + + //鑰佹満姊版墜锛堟満搴婁綅锛� + var Section_ten = DBIems.Where(x => x.StackerNo == "鏈烘鎵�3") + .Select(x => new + { + stackerNo = x.StackerNo, + r_wheel_SN = x.R_wheel_SN, + r_wheel_type = x.R_wheel_type, + r_part_status = x.R_part_status, + r_part_process = x.R_part_process, + g_name = DBIems3.Name, + g_communication_IO = DBIems3.communication_IO, + g_drive_fault = DBIems3.drive_fault, + g_emergency_stop_portal = DBIems3.emergency_stop_portal, + g_gantry_state = DBIems3.gantry_state, + g_portal_fault = DBIems3.portal_fault, + g_power_on = DBIems3.power_on, + g_programm_running = DBIems3.programm_running, + g_ready_for_auto_start = DBIems3.ready_for_auto_start, + g_ready_for_operate = DBIems3.ready_for_operate, + g_state_AUTO = DBIems3.state_AUTO, + g_state_JOG = DBIems3.state_JOG, + g_state_MDA = DBIems3.state_MDA, + + }) + .ToList(); + var Section_twelve = DBIems.Where(x => x.StackerNo == "鏈烘鎵�3").ToList(); //鏂版満姊版墜锛堜笅鏂欏彛浣嶏級 + + + List<SectionData> sectDataList7 = new List<SectionData>(); + var seDataList7 = new SectionData + { + r_direction = 0, + r_machine_nr = false, + r_part_process = 1, //璇诲彇杞﹁疆闆朵欢宸ヨ壓 + r_part_status = 0, //璇诲彇杞﹁疆闆朵欢鐘舵�� + r_wheel_SN = "", + r_wheel_type = 3, //璇诲彇杞﹁疆绫诲瀷 + stackerNo = "30.12", + + }; + sectDataList7.Add(seDataList7); + + var Section_eleven = sectDataList7.ToList(); //娑傛补鏈� + + var Section_fifteen = DBIems2.ToList(); + + var data = new + { + Section_one, + Section_two, + Section_three, + Section_four, + Section_five, + Section_six, + Section_seven, + Section_eight, + Section_nine, + Section_ten, + Section_eleven, + Section_twelve, + Section_thirteen, + Section_fifteen + }; + + return Ok(data); + } + + private object CreateSectionFiveItem3(WheelDBItem x) + { + var stackerToMachineMap = new Dictionary<string, string> + { + { "30.4", "Machine9" }, + { "30.5", "Machine10" }, + { "30.9", "Machine11" }, + { "30.10", "Machine12" } + }; + var machineDataLookup = MachineDBItem.VK5MachineDBItem.Where(x => x.Name == "Machine9" || x.Name == "Machine10" || x.Name == "Machine11" || x.Name == "Machine12").ToDictionary(x => x.Name, x => x); //VK4鏈哄簥瀵硅薄闆嗗悎 + if (stackerToMachineMap.TryGetValue(x.StackerNo, out var machineName) && machineDataLookup.TryGetValue(machineName, out var machineData)) + { + return new + { + stackerNo = x.StackerNo, + r_wheel_SN = x.R_wheel_SN, + r_wheel_type = x.R_wheel_type, + r_part_status = x.R_part_status, + r_part_process = x.R_part_process, + c_machine_state = machineData.machine_state, + + }; + } + else + { + return new + { + StackerNo = (string)null, + + }; + } + } + + [HttpGet("Four_unit_plc3")] + public IActionResult Four_unit_plc3(string staname) + { + var data = MachineDBItem.VK5MachineDBItem.Where(x => x.Name == staname).ToList(); + + return Ok(data); + } + #endregion + + + + // 杈呭姪鏂规硶锛氭鏌ョ粰瀹氱殑 stackerNo 鏄惁鍦ㄦ寚瀹氱殑鑼冨洿鍐� + private bool IsInRange(string stackerNo, int startRow, int startColumn, int endRow, int endColumn) + { + string[] parts = stackerNo.Split('.'); + if (parts.Length != 2) + return false; + + if (!int.TryParse(parts[0], out int row) || !int.TryParse(parts[1], out int column)) + return false; + + return row == startRow && column >= startColumn && row == endRow && column <= endColumn; + } + #endregion + + #region 绗簲鏉垮潡锛堟柊澧炲唴瀹癸級 /// <summary> /// 宸ュ崟淇℃伅VV_Workinfo diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/IServices/system/Partial/Idt_stationinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/IServices/system/Partial/Idt_stationinfoService.cs" index b99f78e..89951a6 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/IServices/system/Partial/Idt_stationinfoService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/IServices/system/Partial/Idt_stationinfoService.cs" @@ -12,6 +12,7 @@ WebResponseContent SetStationEnable(object parm); WebResponseContent SendAGVTask(SaveModel saveModel); WebResponseContent dt_stationinfolist(); + WebResponseContent pcs_dt_stationinfolist(); WebResponseContent Trayswitching(SaveModel saveModel); } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs" index befac78..d8f6713 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/system/Partial/dt_stationinfoService.cs" @@ -338,7 +338,7 @@ WebResponseContent content = new WebResponseContent(); VOLContext volContext = new VOLContext(); Idt_stationinfoRepository dsta = new dt_stationinfoRepository(volContext); - string[] stationCodes = { "A", "S", "X", "W", "DD", "B", "C", "D01" }; + string[] stationCodes = { "W", "A", "B", "C", "D01" }; List<Tuple<List<dt_stationinfo>, int>> responseData = new List<Tuple<List<dt_stationinfo>, int>>(); foreach (string code in stationCodes) { @@ -350,5 +350,21 @@ return content; } + public WebResponseContent pcs_dt_stationinfolist() + { + WebResponseContent content = new WebResponseContent(); + VOLContext volContext = new VOLContext(); + Idt_stationinfoRepository dsta = new dt_stationinfoRepository(volContext); + string[] stationCodes = { "X01", "X02", "X03", "S", "DD001" }; + List<Tuple<List<dt_stationinfo>>> responseData = new List<Tuple<List<dt_stationinfo>>>(); + foreach (string code in stationCodes) + { + var data = dsta.Find(_ => true).Where(a => a.stationCode.Contains(code)).OrderBy(a => a.stationCode).ToList(); + responseData.Add(Tuple.Create(data)); + } + content.Data = responseData; + return content; + } + } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WMS/Partial/dt_stationinfoController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WMS/Partial/dt_stationinfoController.cs" index 92f4799..66706fc 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WMS/Partial/dt_stationinfoController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WMS/Partial/dt_stationinfoController.cs" @@ -66,7 +66,7 @@ } /// <summary> - /// 灞曠ず骞抽潰鍥炬暟鎹� + /// 灞曠ず骞抽潰鍥炬暟鎹畃cs_dt_stationinfolist /// </summary> /// <param name="parm"></param> /// <returns></returns> @@ -75,5 +75,15 @@ { return dt_stationinfoService.Instance.dt_stationinfolist(); } + /// <summary> + /// 灞曠ず涓嬫枡鍙f暟鎹� + /// </summary> + /// <param name="parm"></param> + /// <returns></returns> + [HttpPost, Route("pcs_dt_stationinfolist")] + public object pcs_dt_stationinfolist() + { + return dt_stationinfoService.Instance.pcs_dt_stationinfolist(); + } } } diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/\345\267\245\344\270\232\345\244\247\345\261\217" "b/\344\273\243\347\240\201\347\256\241\347\220\206/\345\267\245\344\270\232\345\244\247\345\261\217" index 04dea7d..76c6ba2 160000 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/\345\267\245\344\270\232\345\244\247\345\261\217" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/\345\267\245\344\270\232\345\244\247\345\261\217" @@ -1 +1 @@ -Subproject commit 04dea7dab8ffaea59302a743065b9293d4ac74ef +Subproject commit 76c6ba213c6a0161310fd520d6edb4e4f78b8792 -- Gitblit v1.9.3