wxw
2024-09-01 c567aae08ef771d0461d08bc52e593362f7fda22
Web/src/views/device/deviceInfo/index.vue
@@ -18,14 +18,14 @@
               <el-collapse-item title="堆垛机" name="2">
                  <div style="overflow-x: auto;white-space: nowrap;">
                     <el-card v-for="(stacker, index) in stackers" :key="index" class="box-card" shadow="hover">
                        <el-switch v-model="stacker.isConn" :inactive-text="`${stacker.text}`"></el-switch>
                        <el-switch disabled  v-model="stacker.isConn" :inactive-text="`${stacker.text}`"></el-switch>
                     </el-card>
                  </div>
               </el-collapse-item>
               <el-collapse-item title="输送线" name="3">
                  <el-card v-for="(conveyor, index) in conveyors" :key="index" class="box-card" shadow="hover">
                     <el-switch v-model="conveyor.isConn" :inactive-text="`${conveyor.text}`"></el-switch>
                     <el-switch disabled  v-model="conveyor.isConn" :inactive-text="`${conveyor.text}`"></el-switch>
                  </el-card>
               </el-collapse-item>
            </el-collapse>
@@ -53,7 +53,7 @@
               <div class="grid-container">
                  <div v-for="cell in cellsData" :key="cell.Id">
                     <div v-if="cell.IsShow === 0"
                        :class="['grid-item', { 'active': cell.IsUse === 1 }, { 'active2': cell.IsUse === 2 }]">
                        :class="['grid-item', { 'active': cell.IsUse === 1 }, { 'active2': cell.IsUse === 2 }, { 'active3': cell.IsUse === 3 }]">
                        <div>{{ cell.Code }}</div>
                     </div>
                  </div>
@@ -65,9 +65,10 @@
</template>
<script lang="ts" setup>
import { ref, reactive } from 'vue';
import { Vue2 } from 'vue-demi';
import { ref, reactive, onMounted } from 'vue';
import { listStatus } from '/@/api/wcs/wcsPlc';
import { signalR } from './signalR';
const state = ref<any>({});
const stackers = ref<any>({});
@@ -80,6 +81,28 @@
   conveyors.value = res.data.result.listPlc.filter(s => s.type == 1 || s.type == 4);
};
handleQuery();
//连接signalR 监听变更
onMounted(async () => {
   signalR.off('PublicPlcConn');
   signalR.on('PublicPlcConn', (data: any) => {
      console.log(data)
      if (data.type === 0) {
         // 替换 stackers 中的相应项
         const index = stackers.value.findIndex(item => item.id === data.id);
         if (index !== -1) {
            stackers.value[index] = data;
         }
      } else if (data.type === 1 || data.type === 4) {
         // 替换 conveyors 中的相应项
         const index = conveyors.value.findIndex(item => item.id === data.id);
         if (index !== -1) {
            conveyors.value[index] = data;
         }
      }
      console.log(stackers.value[0].isConn)
   });
});
const activeName = ['1', '2', '3'];
const value1 = ref(false);
@@ -1577,57 +1600,57 @@
   { Id: 202, Code: '202', IsShow: 0, IsUse: 2 },
   { Id: 203, Code: '203', IsShow: 1, IsUse: 0 },
   { Id: 204, Code: '204', IsShow: 0, IsUse: 2 },
   { Id: 205, Code: '205', IsShow: 1, IsUse: 0 },
   { Id: 206, Code: '206', IsShow: 1, IsUse: 0 },
   { Id: 207, Code: '207', IsShow: 1, IsUse: 0 },
   { Id: 208, Code: '208', IsShow: 1, IsUse: 0 },
   { Id: 209, Code: '209', IsShow: 1, IsUse: 0 },
   { Id: 210, Code: '210', IsShow: 1, IsUse: 0 },
   { Id: 211, Code: '211', IsShow: 1, IsUse: 0 },
   { Id: 212, Code: '212', IsShow: 1, IsUse: 0 },
   { Id: 213, Code: '213', IsShow: 1, IsUse: 0 },
   { Id: 214, Code: '214', IsShow: 1, IsUse: 0 },
   { Id: 215, Code: '215', IsShow: 1, IsUse: 0 },
   { Id: 216, Code: '216', IsShow: 1, IsUse: 0 },
   { Id: 217, Code: '217', IsShow: 1, IsUse: 0 },
   { Id: 218, Code: '218', IsShow: 1, IsUse: 0 },
   { Id: 219, Code: '219', IsShow: 1, IsUse: 0 },
   { Id: 220, Code: '220', IsShow: 1, IsUse: 0 },
   { Id: 221, Code: '221', IsShow: 1, IsUse: 0 },
   { Id: 222, Code: '222', IsShow: 1, IsUse: 0 },
   { Id: 223, Code: '223', IsShow: 1, IsUse: 0 },
   { Id: 224, Code: '224', IsShow: 1, IsUse: 0 },
   { Id: 225, Code: '225', IsShow: 1, IsUse: 0 },
   { Id: 226, Code: '226', IsShow: 1, IsUse: 0 },
   { Id: 227, Code: '227', IsShow: 1, IsUse: 0 },
   { Id: 228, Code: '228', IsShow: 1, IsUse: 0 },
   { Id: 229, Code: '229', IsShow: 1, IsUse: 0 },
   { Id: 230, Code: '230', IsShow: 1, IsUse: 0 },
   { Id: 231, Code: '231', IsShow: 1, IsUse: 0 },
   { Id: 232, Code: '232', IsShow: 1, IsUse: 0 },
   { Id: 233, Code: '233', IsShow: 1, IsUse: 0 },
   { Id: 234, Code: '234', IsShow: 1, IsUse: 0 },
   { Id: 235, Code: '235', IsShow: 1, IsUse: 0 },
   { Id: 236, Code: '236', IsShow: 1, IsUse: 0 },
   { Id: 237, Code: '237', IsShow: 1, IsUse: 0 },
   { Id: 238, Code: '238', IsShow: 1, IsUse: 0 },
   { Id: 239, Code: '239', IsShow: 1, IsUse: 0 },
   { Id: 240, Code: '240', IsShow: 1, IsUse: 0 },
   { Id: 241, Code: '241', IsShow: 1, IsUse: 0 },
   { Id: 242, Code: '242', IsShow: 1, IsUse: 0 },
   { Id: 243, Code: '243', IsShow: 1, IsUse: 0 },
   { Id: 244, Code: '244', IsShow: 1, IsUse: 0 },
   { Id: 245, Code: '245', IsShow: 1, IsUse: 0 },
   { Id: 246, Code: '246', IsShow: 1, IsUse: 0 },
   { Id: 247, Code: '247', IsShow: 1, IsUse: 0 },
   { Id: 248, Code: '248', IsShow: 1, IsUse: 0 },
   { Id: 249, Code: '249', IsShow: 1, IsUse: 0 },
   { Id: 250, Code: '250', IsShow: 1, IsUse: 0 },
   { Id: 251, Code: '251', IsShow: 1, IsUse: 0 },
   { Id: 252, Code: '252', IsShow: 1, IsUse: 0 },
   { Id: 253, Code: '253', IsShow: 1, IsUse: 0 },
   { Id: 254, Code: '254', IsShow: 1, IsUse: 0 },
   { Id: 255, Code: '255', IsShow: 1, IsUse: 0 },
   { Id:205 , Code: '205', IsShow: 0, IsUse: 3 },
   { Id:206 , Code: '206', IsShow: 0, IsUse: 3 },
   { Id:207 , Code: '207', IsShow: 0, IsUse: 3 },
   { Id:208 , Code: '208', IsShow: 0, IsUse: 3 },
   { Id:209 , Code: '209', IsShow: 0, IsUse: 3 },
   { Id:210 , Code: '210', IsShow: 0, IsUse: 3 },
   { Id:211 , Code: '211', IsShow: 0, IsUse: 3 },
   { Id:212 , Code: '212', IsShow: 0, IsUse: 3 },
   { Id:213 , Code: '213', IsShow: 0, IsUse: 3 },
   { Id:214 , Code: '214', IsShow: 0, IsUse: 3 },
   { Id:215 , Code: '215', IsShow: 0, IsUse: 3 },
   { Id:216 , Code: '216', IsShow: 0, IsUse: 3 },
   { Id:217 , Code: '217', IsShow: 0, IsUse: 3 },
   { Id:218 , Code: '218', IsShow: 0, IsUse: 3 },
   { Id:219 , Code: '219', IsShow: 0, IsUse: 3 },
   { Id:220 , Code: '220', IsShow: 0, IsUse: 3 },
   { Id:221 , Code: '221', IsShow: 0, IsUse: 3 },
   { Id:222 , Code: '222', IsShow: 0, IsUse: 3 },
   { Id:223 , Code: '223', IsShow: 0, IsUse: 3 },
   { Id:224 , Code: '224', IsShow: 0, IsUse: 3 },
   { Id:225 , Code: '225', IsShow: 0, IsUse: 3 },
   { Id:226 , Code: '226', IsShow: 0, IsUse: 3 },
   { Id:227 , Code: '227', IsShow: 0, IsUse: 3 },
   { Id:228 , Code: '228', IsShow: 0, IsUse: 3 },
   { Id:229 , Code: '229', IsShow: 0, IsUse: 3 },
   { Id:230 , Code: '230', IsShow: 0, IsUse: 3 },
   { Id:231 , Code: '231', IsShow: 0, IsUse: 3 },
   { Id:232 , Code: '232', IsShow: 0, IsUse: 3 },
   { Id:233 , Code: '233', IsShow: 0, IsUse: 3 },
   { Id:234 , Code: '234', IsShow: 0, IsUse: 3 },
   { Id:235 , Code: '235', IsShow: 0, IsUse: 3 },
   { Id:236 , Code: '236', IsShow: 0, IsUse: 3 },
   { Id:237 , Code: '237', IsShow: 0, IsUse: 3 },
   { Id:238 , Code: '238', IsShow: 0, IsUse: 3 },
   { Id:239 , Code: '239', IsShow: 0, IsUse: 3 },
   { Id:240 , Code: '240', IsShow: 0, IsUse: 3 },
   { Id:241 , Code: '241', IsShow: 0, IsUse: 3 },
   { Id:242 , Code: '242', IsShow: 0, IsUse: 3 },
   { Id:243 , Code: '243', IsShow: 0, IsUse: 3 },
   { Id:244 , Code: '244', IsShow: 0, IsUse: 3 },
   { Id:245 , Code: '245', IsShow: 0, IsUse: 3 },
   { Id:246 , Code: '246', IsShow: 0, IsUse: 3 },
   { Id:247 , Code: '247', IsShow: 0, IsUse: 3 },
   { Id:248 , Code: '248', IsShow: 0, IsUse: 3 },
   { Id:249 , Code: '249', IsShow: 0, IsUse: 3 },
   { Id:250 , Code: '250', IsShow: 0, IsUse: 3 },
   { Id:251 , Code: '251', IsShow: 0, IsUse: 3 },
   { Id:252 , Code: '252', IsShow: 0, IsUse: 3 },
   { Id:253 , Code: '253', IsShow: 0, IsUse: 3 },
   { Id:254 , Code: '254', IsShow: 0, IsUse: 3 },
   { Id: 255, Code: '255', IsShow: 0, IsUse: 3 },
   { Id: 256, Code: '256', IsShow: 1, IsUse: 0 },
   { Id: 257, Code: '257', IsShow: 1, IsUse: 0 },
   { Id: 258, Code: '258', IsShow: 1, IsUse: 0 },
@@ -1949,12 +1972,16 @@
.grid-container-line {
   display: grid;
   grid-template-columns: repeat(51, 1fr); /* 自适应列宽 */
   grid-template-rows: 1fr; /* 自适应行高 */
   grid-template-columns: repeat(51, 1fr);
   /* 自适应列宽 */
   grid-template-rows: 1fr;
   /* 自适应行高 */
   gap: 0;
   margin-top: 25px;
   width: 100%; /* 宽度自适应 */
   height: 1fr; /* 高度自适应 */
   width: 100%;
   /* 宽度自适应 */
   height: 1fr;
   /* 高度自适应 */
}
.grid-item-line {
@@ -2016,7 +2043,6 @@
}
.grid-container {
   margin-top: 10px;
   width: 100%;
   display: grid;
   grid-template-columns: repeat(51, 1fr);
@@ -2025,15 +2051,19 @@
   /* 每行高度 */
   gap: 0px;
   /* Gap between cells */
   margin-top: -20px
}
.grid-item {
   background-color: #9c9c9c;
   border: 1px solid #797777;
   text-align: center;
   line-height: 1.4vw; /* 行高 */
   width: 100%; /* 自适应宽度 */
   height: 100%; /* 自适应高度 */
   line-height: 1.4vw;
   /* 行高 */
   width: 100%;
   /* 自适应宽度 */
   height: 100%;
   /* 自适应高度 */
   color: #fff;
   font-size: 0.7vw;
}
@@ -2047,4 +2077,11 @@
.active2>div {
   display: none;
}
.active3 {
   background-color: #fff;
   border:1px solid red;
}
.active3>div {
   display: none;
}
</style>