wangfei
2024-08-06 dd86b5a89faff35cb3d74f3c47bdf65db63aa62d
掰片/识别新增搜索功能,登录出现红叉,刷新username报错
4个文件已修改
281 ■■■■ 已修改文件
UI-Project/src/layout/MainErpView.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/Identify/identify.vue 216 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/LoginView.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/views/largescreen/largescreen.vue 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UI-Project/src/layout/MainErpView.vue
@@ -14,7 +14,7 @@
// const { $i18n } = useI18n(); // 获取 i18n 实例  
const router = useRouter()
const userStore = useUserInfoStore()
const user = userStore.user.userName
// const user = userStore.user.userName
let userInfoStr = window.localStorage.getItem('userInfo')
console.log(userInfoStr);
UI-Project/src/views/Identify/identify.vue
@@ -2,23 +2,18 @@
  <div style="display: flex;">
<el-input v-model="inputValue" style="margin-left: 15px;margin-top: 10px;width: 240px" placeholder="请输入工程号" @blur="handleBlur"/>
<el-pagination
      v-model:current-page="currentPage3"
      v-model:page-size="pageSize3"
      v-model:current-page="currentPage"
      :page-size="pageSize"
      :size="size"
      :disabled="disabled"
      :background="background"
      layout="prev, pager, next, jumper"
      :total="1000"
      @size-change="handleSizeChange"
      :total="totalPages"
      @current-change="handleCurrentChange"
    />
    </div>
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;" v-loading="loading">
      <el-scrollbar height="550px" >
  <div id="app" style="margin-top: 20px;">
    <!-- <div
      :style="{ width: `${olWidth}px`, height: `${olHeight}px`,position: 'relative',}"
    >  -->
    <el-card style="flex: 1;margin-left: 10px;margin-top: 10px;margin-right: 10px;height: 600px;" v-loading="loading">
      <el-scrollbar height="550px" width="1200px" style="background-color: #e9e9eb;">
  <div style="position: relative;">
    <div  
      v-for="(rect, index) in adjustedRects"  
      :key="rect.glass_id"  
@@ -32,13 +27,13 @@
     <!-- 箭头 -->  
     <!-- <div id="arrow"></div>  
     <div id="line"></div>   -->
     <!-- <div  class="centered-text" >NG24030401B01</div> -->
     <div  class="centered-text">
    <div>{{ rect.process_id }}</div>
    <div style="margin-top: 50px;margin-left: -85px;">{{ rect.widtha }}*{{ rect.heighta }}</div>
    <div>{{ rect.glass_id }}</div>
    <div>{{ rect.widtha }}*{{ rect.heighta }}</div>
  </div>
  </div> 
  <!-- 点击弹出 -->
   </div>
  </el-scrollbar>
  <el-dialog v-model="blind" top="30vh" width="15%" style="text-align: center;">
        <el-button type="warning" plain :icon="Delete" @click="handleDamage(currentGlassId)"  style="width: 140px;margin-left: 10px;">
          {{ $t('order.dilapidation') }}
@@ -47,15 +42,12 @@
          <el-icon class="el-icon--right"><Upload /></el-icon>
          {{ $t('order.Takeaway') }}</el-button>
  </el-dialog> 
   </div>
  <!-- </div>   -->
  </el-scrollbar>
  </el-card>
</template>  
<script setup lang="ts">  
import { Delete, Upload } from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { ref, onMounted, onBeforeUnmount,onUnmounted,watchEffect } from 'vue';
import { ref, onMounted, onBeforeUnmount,onUnmounted, computed  } from 'vue';
import request from "@/utils/request"
import { WebSocketHost ,host} from '@/utils/constants'
import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService';
@@ -65,11 +57,18 @@
const blind = ref(false)
const olWidth = ref(); 
const olHeight = ref();
const process_id = ref(); // 用于存储process_id的响应式引用
const glass_id = ref();
const inputValue = ref('');
const currentGlassId = ref(null); // 存储当前点击矩形的 glass_id  
const adjustedRects = ref([]);
const raw = ref([]);
let webSocket: WebSocket | null = null;
const totalPages = ref(0);
const pageSize = ref(1);
const currentPage = ref(1);
const disabled = false;
const size = 'small';
const rawData = ref([]);
// const handleBind = (row) => {
//   blind.value = true; // 打开绑定架子对话框
// };
@@ -78,42 +77,6 @@
  currentGlassId.value = glassId;  
  blind.value = true;  
}  
// onMounted(async () => {
//   try {
//     const response = await request.post('/cacheGlass/taskCache/currentCutTerritory'); // 替换为你的API端点
//     if (response.code === 200) {
//       // const process_id = response.data[0].process_id
//       const rawRects = response.data; // 设置矩形数据
//       console.log(response.data);
//       const { olWidth: newolWidth, olHeight: newolHeight, process_id: newprocess_id ,glass_id:newglass_id } = response.data; // 获取尺寸
//       olWidth.value = newolWidth; // 设置容器宽度
//       olHeight.value = newolHeight; // 设置容器高度
//       process_id.value = newprocess_id;
//       glass_id.value = newglass_id;
//       adjustedRects.value = rawRects.map(rect => ({
//         ...rect, // 复制原始对象的其他属性
//         x_axis: (rect.x_axis*100) * 0.003, // 将x值除以3
//         y_axis: (rect.y_axis*100) * 0.003,
//         width: (rect.width*100) * 0.002 ,
//         widtha: rect.width ,
//         heighta: rect.height ,
//         height:( rect.height*100) * 0.002 ,
//         glass_state: rect.glass_state
//       }));
//       console.log(adjustedRects.value);
//       //   console.log( (rect.width*100) / 300 );
//     } else {
//       // console.error('Failed to fetch rectangles from API.');
//       console.error('Failed to fetch rects from API.');
//     }
//   } catch (error) {
//     // console.error('Error fetching rectangles :', error);
//     console.error('Error fetching rects :', error);
//   }
// });
// 破损
const handleDamage = async () => {
  try  {
@@ -170,41 +133,51 @@
  }
}
const handleBlur = async () => {  
  if (inputValue.value !== '') {
    try {
      var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
      const response = await request.post(url)
      if (response.data && response.data.currentCutTerritory) {
        // 假设返回的数据需要调整坐标和尺寸
        adjustedRects.value = response.data.currentCutTerritory.map(rect => ({
          ...rect,
          x_axis: 1360 - (rect.x_axis + rect.width) * 0.37,
          y_axis: (rect.y_axis * 100) * 0.003,
          width: (rect.width * 100) * 0.002,
          height: (rect.height * 100) * 0.002,
          widtha: rect.width ,
          heighta: rect.height ,
          glass_state: rect.glass_state
        }));
  if (inputValue.value) {
    var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
    const response = await request.post(url)
    if (response.code === 200) {
      console.log(response.data);
      const rawRects = response.data[0];
      rawData.value = response.data;
      totalPages.value = rawData.value.length;
      adjustedRects.value = rawRects.map(rect => ({
        ...rect,
        x_axis: (6000 -(rect.x_axis + rect.width)) * 0.2085,
        y_axis: rect.y_axis * 0.17,
        width: rect.width * 0.2 ,
        widtha: rect.width ,
        heighta: rect.height ,
        height: rect.height * 0.165 ,
        glass_state: rect.glass_state
      }));
      // 如果WebSocket已连接,则关闭
      if (webSocket) {
        webSocket.close();
        webSocket = null;
      }  
    } catch (error) {
      console.error('请求数据失败:', error);
       currentPage.value = 1;
    }  
  }
};
// const handleBlur = async () => {
//   if (inputValue.value !=''){
//     try {
//       var url="/cacheGlass/taskCache/cutTerritory?current="+inputValue.value;
//       const response = await request.post(url)
//       console.log(response.data.length);
//     if (response.code == 200) {
//       adjustedRects.value = response.data
//       ElMessage.success(response.message);
//     } else {
//       ElMessage.error(response.msg);
//     }
// }
  } else{
    connectWebSocket();
  }
};
const handleCurrentChange = (val: number) => {
  currentPage.value = val;
  const page = currentPage.value - 1
      adjustedRects.value = rawData.value[page]?.map(rect => ({
      // adjustedRects.value = rawRects.map(rect => ({
        ...rect,
        x_axis: (6000 -(rect.x_axis + rect.width)) * 0.2085,
        y_axis: rect.y_axis * 0.17,
        width: rect.width * 0.2 ,
        widtha: rect.width ,
        heighta: rect.height ,
        height: rect.height * 0.165 ,
        glass_state: rect.glass_state
      }));
};
function getRectColor(state: number): string {  
  switch (state) {  
    case 0:  
@@ -231,38 +204,44 @@
    }  
  });  
}
let socket = null;
const connectWebSocket = () => {
  if (!webSocket) {
const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`;
const handleMessage = (data) => {
  // adjustedRects.value = data.currentCutTerritory[0]
  adjustedRects.value = data.currentCutTerritory[0].map(rect => ({
    webSocket = new WebSocket(socketUrl);
    webSocket.onmessage = (event) => {
      const data = JSON.parse(event.data);
        adjustedRects.value = data.currentCutTerritory[0].map(rect => ({
        ...rect,
        x_axis: 1360 -(rect.x_axis + rect.width) * 0.37,
        // x_axis: (rect.x_axis*100) * 0.003,
        y_axis: (rect.y_axis*100) * 0.003,
        width: (rect.width*100) * 0.002 ,
        x_axis: (6000 -(rect.x_axis + rect.width)) * 0.2085,
        y_axis: rect.y_axis * 0.17,
        width: rect.width * 0.2 ,
        widtha: rect.width ,
        heighta: rect.height ,
        height:( rect.height*100) * 0.002 ,
        height: rect.height * 0.165 ,
        glass_state: rect.glass_state
      }));
};
onMounted(() => {
  socket = initializeWebSocket(socketUrl, handleMessage);
});
  onUnmounted(() => {
    if (socket) {
    closeWebSocket(socket);
    }
    });
  watchEffect(() => {
  if (inputValue.value === '') {
    handleMessage();
      }));
    };
    webSocket.onerror = (error) => {
      console.error('WebSocket Error:', error);
    };
    webSocket.onclose = () => {
      console.log('WebSocket Connection Closed');
      // 可以选择重新连接
    };
  }  
});
onBeforeUnmount(() => {
  console.log("关闭了")
  closeWebSocket();
};
onMounted(() => {
  // 初始时,如果输入框为空,则连接WebSocket
  if (!inputValue.value) {
    connectWebSocket();
  }
});
onUnmounted(() => {
  if (webSocket) {
    webSocket.close();
  }
});
</script>  
  
@@ -273,11 +252,12 @@
.centered-text {
  /* 设置文字居中样式 */  
  display: flex;
  /* display: flex; */
  justify-content: center;  
  align-items: center;
  align-items: center;
  height: 100%; /* 确保div占据整个矩形的高度 */  
}
  font-size: small;
}
#rect {  
  position: relative; /* 确保箭头可以相对于矩形定位 */  
  /* 其他样式 */  
UI-Project/src/views/LoginView.vue
@@ -61,12 +61,10 @@
          .then((res) => {
            if (res['code'] == 200) {
              store.$patch({user: res.data})
              console.log(res.data)
              router.push('/main')
              ElMessage.success(t('login.loginSuccessful'))
            } else {
              ElMessage.error(res['msg'])
              // ElMessage.error(res['msg'])
              store.$patch({
              user: null,
              })
UI-Project/src/views/largescreen/largescreen.vue
@@ -25,8 +25,12 @@
      </el-table-column>
      </el-table>
</div> 
<div id="center" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
<div id="parent" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 750px;">
  <img src="../../assets/d1a.png" alt="" style="margin-left: -10px; width: 100%;height: 100%;position: relative;"> 
  <div id="overlay" v-show="flake"></div>
  <div id="overlayb" v-show="flakeb"></div>
  <div id="overlayc" v-show="flakec"></div>
  <div id="overlayd" v-show="flaked"></div>
</div>
<div id="centerright" style="margin-top: 10px;margin-left: 10px; height: 240px;width: 240px;background-color: #911005;">
  <el-table height="240" ref="table" width="340px"
@@ -116,6 +120,10 @@
const tableDatac = ref([])
const adjustedRects = ref([]);  
const chartRefs = ref([]);  
const flake = ref(true)
const flakeb = ref(true)
const flakec = ref(true)
const flaked = ref(true)
const thisProcess = ref(); // 用于存储process_id的响应式引用 
// 定义一个响应式引用来存储图表实例    
const chartDom = ref(null);  
@@ -169,8 +177,11 @@
  chartRefs.value[index].dom = el;  
}  
const socketUrl2 = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingIsRun`;
onMounted(() => {  
socket = new WebSocket(socketUrl);  
socket = new WebSocket(socketUrl2);
socket.onmessage = (event) => {  
  const data = JSON.parse(event.data);  
  processesData.value = data.device[0].map(rect => ({  
@@ -248,23 +259,59 @@
</script>  
<style scoped>  
.echarts-container {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.echarts-item {
width: 150px;
height: 150px;
margin: 20px;
}
.pie-chart {
width: 100%;
height: 100%;
}
#parent{
  position: relative;
  width: 1500px;
  margin-left: -300px
}
#overlay{
  position: absolute;
  z-index: 1;
  width: 30px;
  height: 10px;
  background-color: #529b2e;
  margin-top: -39px;
  margin-left: 4px;
}
#overlayb{
  position: absolute;
  z-index: 1;
  width: 16px;
  height: 115px;
  background-color: #529b2e;
  margin-top: -197px;
  margin-left: 9px;
}
#overlayc{
  position: absolute;
  z-index: 1;
  width: 16px;
  height: 16px;
  background-color: #529b2e;
  margin-top: -238px;
  margin-left: 9px;
}
#overlayd{
  position: absolute;
  z-index: 1;
  width: 28px;
  height: 11px;
  background-color: #529b2e;
  margin-top: -234px;
  margin-left: 56px;
}
</style>