zouyu
2026-04-02 8fc1138d2f2115121fd15b679ca1a20fc2ba838a
src/views/business/inspectionTask/inspection.vue
@@ -20,7 +20,7 @@
        <el-button v-if="insOrder.ifsOrderType && insOrder.ifsOrderType==='02wg'" size="small" type="primary" @click="showMaterialPropsDialog">IFS物料属性更新</el-button>
        <el-button size="small" type="primary" @click="refreshView">刷新</el-button>
        <el-button v-if="typeSource == 1" size="small" type="primary" @click="openPurchase">进货验证</el-button>
        <el-button v-if="state == 1 && typeSource == 1" size="small" type="primary"
        <el-button v-if="state == 1 && [0,1].includes(Number(typeSource))" size="small" type="primary"
          @click="openUnPassDialog('add')">不合格处理</el-button>
        <el-button size="small" type="primary" @click="sampleVisible = true; uploadSample();">样品切换</el-button>
        <!--        <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">任务切换</el-button>-->
@@ -188,7 +188,7 @@
          <el-button :loading="dataAcquisitionLoading" v-if="state == 1" size="small" type="primary"
            @click="getDataAcquisitionDevice">数据采集</el-button>
          <el-button :type="dataAcquisitionEidtAble ? '' : 'primary'" v-if="state == 1" size="small"
            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble,disconnect()">{{ dataAcquisitionEidtAble ? "关闭编辑" : "编辑数采"
            @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble">{{ dataAcquisitionEidtAble ? "关闭编辑" : "编辑数采"
            }}</el-button>
        </div>
      </div>
@@ -650,7 +650,6 @@
import html2canvas from "html2canvas";
import { mapGetters } from "vuex";
import viewManHourDia from "@/views/business/inspectionTask/components/viewManHourDia.vue";
import {connect,disconnect,weightList} from "@/utils/connect";
import {getOneByIfsId,saveOrUpdateProps} from "@/api/business/ifsPartProps.js";
import {getDicts} from "@/api/system/dict/data";
export default {
@@ -704,8 +703,6 @@
        sampleName: null,
        state: null,
      },
      isSerialConnected: false, // 新增状态变量,串口连接状态
      serialPort: null, // 存储串口对象
      id: null,
      changeType: null,
      insOrder: {},
@@ -986,7 +983,6 @@
          }
        });
      }
      console.log("处理后的模板-",this.tableList)
    },
    // 特殊检验项--监听设备信息改变
    equipForm: {
@@ -997,11 +993,6 @@
  beforeDestroy() {
    // 在组件销毁前确保停止 Worker,避免内存泄漏
    this.stopWorker();
    disconnect();
    // 调用前先判断方法是否存在,避免报错
    if (this.closeSerialPort) {
      this.closeSerialPort();// 组件销毁前关闭串口
    }
  },
  methods: {
    validateQuality(){
@@ -1014,7 +1005,8 @@
    calcInbondLength(startMeterMark,endMeterMark){
      let inboundLength = null;
      if((startMeterMark!=null && startMeterMark!=='') && (endMeterMark!=null&&endMeterMark!=='')){
        inboundLength = Math.abs(endMeterMark - startMeterMark)
        let minus = this.$Big(endMeterMark).minus(this.$Big(startMeterMark));
        inboundLength = Math.abs(minus)
      }
      return inboundLength;
    },
@@ -1066,10 +1058,12 @@
        ...this.ifsMaterialPropsForm,
        partNo: this.insOrder.partNo,
        lotBatchNo: this.insOrder.lotBatchNo,
        contract: this.insOrder.contract
      }).then((res)=>{
        if(res.code==200){
          this.$message.success("保存成功");
          this.ifsMaterialPropsVisible = false;
          this.refreshView()
        }
      })
    },
@@ -1082,12 +1076,6 @@
      this.$nextTick(()=>{
        this.ifsMaterialPropsVisible = true;
      })
    },
    disconnect() {
      return disconnect
    },
    sss() {
      console.log(this.$store.state.weightList) //
    },
    // 文件管理--开始
    getList() {
@@ -1171,7 +1159,7 @@
        laboratory: this.sonLaboratory,
      }).then(async (res) => {
        this.insOrder = res.data.insOrder;
        if(res.data.insOrder.ifsOrderType){
        if(res.data.insOrder.ifsOrderType==='02wg'){
          //查询零件属性
          this.getPartProps(res.data.insOrder.ifsInventoryId)
        }
@@ -1329,57 +1317,32 @@
    // 数据采集
  getDataAcquisitionDevice() {
      (async () => {
        try {
          // 检查页面中检测项是否包含密度
          const hasDensityItem = this.currentSample.insProduct.some(item => {
            // 假设密度相关的检测项名称包含 "密度" 关键字,可按需修改
            return item.inspectionItem && item.inspectionItem.includes('密度');
          });
          if (hasDensityItem) {
            // 检查是否支持 Web Serial API
            if ('serial' in navigator) {
              // 请求可用串口
              const ports = await navigator.serial.getPorts();
              if (ports.length > 0) {
                await connect();
              } else {
                console.log('没有可用的串口');
              }
            } else {
              console.log('当前浏览器不支持 Web Serial API');
            }
          }
        } catch (error) {
          console.error('检测串口时出错:', error);
        }
      })().then(() => {
        let itemIds = [];
        this.currentSample.insProduct.forEach((item) => {
          if (item.inspectionItemType === "1") {
            itemIds.push(item.id);
          }
        });
        const params = {
          entrustCode: this.insOrder.entrustCode,
          sampleCode: this.currentSample.sampleCode,
          id: this.currentSample.id,
          itemIds: itemIds,
        };
        this.dataAcquisitionLoading = true;
        dataCollection(params).then((res) => {
          this.dataAcquisitionLoading = false;
          if (res.code != 200) {
            return;
          }
          this.dataAcquisitionInfoNew = this.HaveJson(res.data);
          // 对数采回来的值进行处理
          this.handleDataAcquisition(res.data);
        }).catch(err => {
          this.dataAcquisitionLoading = false;
        });
      });
    },
    let itemIds = [];
    this.currentSample.insProduct.forEach((item) => {
      if (item.inspectionItemType === "1") {
        itemIds.push(item.id);
      }
    });
    const params = {
      entrustCode: this.insOrder.entrustCode,
      lotBatchNo: this.insOrder.lotBatchNo,
      sampleCode: this.currentSample.sampleCode,
      id: this.currentSample.id,
      itemIds: itemIds,
    };
    this.dataAcquisitionLoading = true;
    dataCollection(params).then((res) => {
      this.dataAcquisitionLoading = false;
      if (res.code != 200) {
        return;
      }
      this.dataAcquisitionInfoNew = this.HaveJson(res.data);
      // 对数采回来的值进行处理
      this.handleDataAcquisition(res.data);
    }).catch(err => {
      this.dataAcquisitionLoading = false;
    });
  },
    objectOrder(obj) {
      let newkey = Object.keys(obj).sort();
      let newObj = {};
@@ -1389,7 +1352,6 @@
      return newObj;
    },
    handleDataAcquisition(data, noDialog) {
      console.log("dadad--",data)
      // 是否可以编辑数采数据
      if (this.dataAcquisitionEidtAble) {
        this.getDataType = 1;
@@ -1413,9 +1375,7 @@
          };
        }
        // 循环数采数据
        console.log(data[i],i)
        for (let j in data[i]) {
          console.log("jjjjj--",j)
          // 拼接字符串  检验项分类+检验项+检验子项
          let str0 = "";
          if (i.includes("@")) {
@@ -1512,6 +1472,7 @@
            };
            let list = this.tableList[0].arr;
            let maxNum = 0;
            let itemNum = 0;//包含检验值批注的个数
            list.forEach((item, index) => {
              let num0 = 0;
              let str = "";
@@ -1542,7 +1503,6 @@
                  }
                  let num = 0;
                  list[index].forEach((n) => {
                    // console.log(n.v.ps.value);
                    if (
                      n.v.ps &&
                      n.v.ps.value &&
@@ -1550,11 +1510,16 @@
                      n.v.ps.value.includes("检验值")
                    ) {
                      num++;
                      if (str0 == str) {
                        maxNum = num;
                      const matchArray = n.v.ps.value.match(/\d+/g);
                      if(matchArray){
                        const no = Number(matchArray[0]);
                        itemNum = itemNum>= no ? itemNum : no;
                      }
                    }
                  });
                  if (str0 == str) {
                    maxNum = num===itemNum ? num : itemNum;
                  }
                }
                // 绑定设备
                if (
@@ -1572,6 +1537,7 @@
              });
            });
            // 获取到最大检验值输入个数后重组数据
            console.log("最大个数:", maxNum);
            let obj0 = {
              name: j,
              arr: data[i][j].result,
@@ -1619,7 +1585,6 @@
          this.getDataIndexLoading = false;
          this.dataGetDia = false;
          this.getDataTypeId = "";
          console.log("dadada---",this.dataAcquisitionInfo)
          this.worker0.postMessage(
            JSON.stringify({
              dataAcquisitionInfo: this.dataAcquisitionInfo,
@@ -1633,7 +1598,6 @@
      // 监听 Worker 返回的结果
      this.worker0.onmessage = (event) => {
        let result = JSON.parse(event.data);
        console.log("Worker 返回的结果:", result);
        if (result.method == "changeInput") {
          // 采集后的数据,需要进行计算的线程进行计算
          let { list, n } = result.value;
@@ -2162,7 +2126,6 @@
                  let aa = inspectionItemClass +
                    inspectionItem +
                    inspectionItemSubclass;
                  console.log(aa,str,aa===str)
                  if (
                    this.currentSample.insProduct[i].templateId ===
                    a.templateId &&
@@ -2864,7 +2827,6 @@
        orderId: this.orderId,
        laboratory: this.sonLaboratory,
      }).then((res) => {
        console.log(res)
        if (res.code === 200) {
          if (!res.data || res.data.errorMsg.length == 0) {
            this.submitLoading = true;
@@ -3156,9 +3118,6 @@
    goback() {
      this.$router.go(-1)
    }
  },
  destroyed() {
    disconnect()
  },
};
</script>