chenlu
2024-12-12 515025ffd3ace6f7382f9a853d3aba50f191c8d0
north-glass-erp/northglass-erp/src/components/pp/PrintProcess.vue
@@ -30,12 +30,14 @@
let props = defineProps({
  printList: null,
  printMerge: null,
  printLike: null
  printLike: null,
  printProject:null
})
const {currentRoute} = useRouter()
const route = currentRoute.value
const printMerge = props.printMerge
const printProject = props.printProject
//打印时间
const currentTime = new Date();
@@ -56,9 +58,96 @@
data.value.printList = JSON.parse(props.printList)
let flowCardCount = ''
onMounted(() => {
  console.log(printProject)
      if(props.printProject!=null){
        request.post(`/processCard/getSelectPrintProject/${printProject}`).then((res) => {
          if (res.code == 200) {
            console.log(res.data.data)
            load(res.data.data)
          } else {
            ElMessage.warning(res.msg)
            router.push("/login")
          }
        })
      }else{
      request.post(`/processCard/getSelectPrinting/${merge}/${like}`, data.value).then((res) => {
        if (res.code == 200) {
          produceList.value = deepClone(res.data.data)
            load(res.data.data)
          } else {
            ElMessage.warning(res.msg)
            router.push("/login")
          }
        })
      }
    }
)
const handleGetQRCode = async () => {
  let technologyNumber=''
  for (let i = 0; i < produceList.value.length; i++) {
    if (produceList.value[i].detail[0].qrcode!="" && produceList.value[i].detail[0].qrcode!=null){
       technologyNumber = produceList.value[i].detail[0].qrcode.toString(); // 转换为字符串以便处理每个字符,合并标签
    }else {
       technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转换为字符串以便处理每个字符
    }
    produceList.value[i].detail[0]["qrcodeList"] = []; // 初始化一个空数组用来存储 QR Code
    const processId = produceList.value[i].detail[0].process_id;
    const url = `${processId}/${technologyNumber}`;
    // 生成 QR Code 并存储到数组中
    const qrcodeData = await QRCode.toDataURL(url);
    produceList.value[i].detail[0]["qrcodeList"].push({
      qrcode: qrcodeData,
      technologyNumber: technologyNumber
    });
    // for (let j = 0; j < technologyNumber.length; j++) {
    //   const processId = produceList.value[i].detail[0].process_id;
    //   const url = `${processId}/${technologyNumber[j]}`;
    //   // 生成 QR Code 并存储到数组中
    //   const qrcodeData = await QRCode.toDataURL(url);
    //   produceList.value[i].detail[0]["qrcodeList"].push({
    //     qrcode: qrcodeData,
    //     technologyNumber: technologyNumber[j]
    //   });
    //
    // }
  }
};
//根据输入的数量重新汇总
const handleSummary = () => {
  for (let i = 0; i < produceList.value.length; i++) {
    //数量
    let totalQuantity = 0;
    //面积
    let totalArea = 0;
    //重量
    let totalWeight = 0;
    // 对每个集合中的 detailList 进行计算
    produceList.value[i].detailList.forEach(collection => {
      totalQuantity += collection.quantity * 1;
      //每个序号面积
      collection.total_area = parseFloat((collection.width * collection.height * collection.quantity / 1000000).toFixed(2))
      totalArea = add(totalArea, collection.total_area)
      totalWeight += collection.width * collection.height * collection.quantity / 1000000 * collection.separation * 2.5 * 1;
      //每个序号周长
      collection.perimeter = parseFloat(((collection.width * 2 + collection.height * 2) * collection.quantity / 1000).toFixed(3))
    });
    // 输出每个集合中的总数量
    produceList.value[i].detail[0].quantity = totalQuantity
    produceList.value[i].detail[0].gross_area = totalArea
    produceList.value[i].detail[0].weight = totalWeight
  }
}
const load = (data) => {
  produceList.value = deepClone(data)
          //处理单片厚度
          for (let j = 0; j < produceList.value.length; j++) {
@@ -139,74 +228,6 @@
          handleGetQRCode()
          handleSummary()
          AreaQuantitySummary()
        } else {
          ElMessage.warning(res.msg)
          router.push("/login")
        }
      })
    }
)
const handleGetQRCode = async () => {
  let technologyNumber=''
  for (let i = 0; i < produceList.value.length; i++) {
    if (produceList.value[i].detail[0].qrcode!="" && produceList.value[i].detail[0].qrcode!=null){
       technologyNumber = produceList.value[i].detail[0].qrcode.toString(); // 转换为字符串以便处理每个字符,合并标签
    }else {
       technologyNumber = produceList.value[i].detail[0].technologyNumber.toString(); // 转换为字符串以便处理每个字符
    }
    produceList.value[i].detail[0]["qrcodeList"] = []; // 初始化一个空数组用来存储 QR Code
    const processId = produceList.value[i].detail[0].process_id;
    const url = `${processId}/${technologyNumber}`;
    // 生成 QR Code 并存储到数组中
    const qrcodeData = await QRCode.toDataURL(url);
    produceList.value[i].detail[0]["qrcodeList"].push({
      qrcode: qrcodeData,
      technologyNumber: technologyNumber
    });
    // for (let j = 0; j < technologyNumber.length; j++) {
    //   const processId = produceList.value[i].detail[0].process_id;
    //   const url = `${processId}/${technologyNumber[j]}`;
    //   // 生成 QR Code 并存储到数组中
    //   const qrcodeData = await QRCode.toDataURL(url);
    //   produceList.value[i].detail[0]["qrcodeList"].push({
    //     qrcode: qrcodeData,
    //     technologyNumber: technologyNumber[j]
    //   });
    //
    // }
  }
};
//根据输入的数量重新汇总
const handleSummary = () => {
  for (let i = 0; i < produceList.value.length; i++) {
    //数量
    let totalQuantity = 0;
    //面积
    let totalArea = 0;
    //重量
    let totalWeight = 0;
    // 对每个集合中的 detailList 进行计算
    produceList.value[i].detailList.forEach(collection => {
      totalQuantity += collection.quantity * 1;
      //每个序号面积
      collection.total_area = parseFloat((collection.width * collection.height * collection.quantity / 1000000).toFixed(2))
      totalArea = add(totalArea, collection.total_area)
      totalWeight += collection.width * collection.height * collection.quantity / 1000000 * collection.separation * 2.5 * 1;
      //每个序号周长
      collection.perimeter = parseFloat(((collection.width * 2 + collection.height * 2) * collection.quantity / 1000).toFixed(3))
    });
    // 输出每个集合中的总数量
    produceList.value[i].detail[0].quantity = totalQuantity
    produceList.value[i].detail[0].gross_area = totalArea
    produceList.value[i].detail[0].weight = totalWeight
  }
}
const AreaQuantitySummary = () => {
@@ -234,7 +255,7 @@
          <div style="float: left;"><input style="border: none;font-size: 28px;width: 70px;margin: 5px  "/></div>
          <div id="bj" style="float: right;font-size: 28px">{{ id + 1 }}</div>
          <div>{{ company.companyName }}</div>
          <div>生产流程卡</div>
          <div>生产流程卡<span v-if="printProject!=null">({{ printProject }})</span></div>
          <div  style="font-weight: bolder;display: flex;justify-content:space-between">
            <div>
              打印人:{{user.user.userName}} &nbsp;&nbsp;