scan_patch2.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. const fs = require('fs');
  2. const path = 'd:/project/vue_project/zhongying/wt/src/views/bpm/handleTask/components/productionWarehousing/storage.vue';
  3. let s = fs.readFileSync(path, 'utf8');
  4. const old = ` // 1. 在产品信息表格按批次号匹配
  5. const productIndex = this.productList.findIndex(
  6. (item) => item.batchNo === code
  7. );
  8. if (productIndex > -1) {
  9. this.$set(this.productList[productIndex], 'confirm_status', 1);
  10. this.$message.success(\`产品信息匹配成功:批次号 \${code}\`);
  11. return;
  12. }
  13. // 2. 在包装明细按 categoryCode-batchNo-engrave 规则匹配
  14. const parts = code.split('-');
  15. if (parts.length >= 3) {
  16. const categoryCode = parts[0];
  17. const engrave = parts[parts.length - 1];
  18. const batchNo = parts.slice(1, parts.length - 1).join('-');
  19. console.log('匹配条件:', { categoryCode, batchNo, engrave });
  20. const packingIndex = this.packingList.findIndex(
  21. (item) =>
  22. item.categoryCode === categoryCode &&
  23. item.batchNo === batchNo &&
  24. (((item.extInfo && item.extInfo.engrave === engrave)) ||
  25. item.engrave === engrave)
  26. );
  27. if (packingIndex > -1) {
  28. this.$set(this.packingList[packingIndex], 'confirm_status', 1);
  29. this.$message.success(\`包装明细匹配成功:\${code}\`);
  30. return;
  31. }
  32. }
  33. this.$message.warning(\`未匹配到对应数据:\${code}\`);`;
  34. const _new = ` // 1. 在产品信息表格按批次号匹配
  35. const productItem = this.productList.find(
  36. (item) => item.batchNo === code
  37. );
  38. if (productItem) {
  39. // 直接赋值,避免触发表格的 deep watcher 重新加载
  40. productItem.confirm_status = 1;
  41. this.$message.success(\`产品信息匹配成功:批次号 \${code}\`);
  42. return;
  43. }
  44. // 2. 在包装明细按 categoryCode-batchNo-engrave 规则匹配
  45. const parts = code.split('-');
  46. if (parts.length >= 3) {
  47. const categoryCode = parts[0];
  48. const engrave = parts[parts.length - 1];
  49. const batchNo = parts.slice(1, parts.length - 1).join('-');
  50. console.log('匹配条件:', { categoryCode, batchNo, engrave });
  51. const packingItem = this.packingList.find(
  52. (item) =>
  53. item.categoryCode === categoryCode &&
  54. item.batchNo === batchNo &&
  55. (((item.extInfo && item.extInfo.engrave === engrave)) ||
  56. item.engrave === engrave)
  57. );
  58. if (packingItem) {
  59. // 直接赋值,避免触发 packingList 的 deep watcher 重新加载
  60. packingItem.confirm_status = 1;
  61. this.$message.success(\`包装明细匹配成功:\${code}\`);
  62. return;
  63. }
  64. }
  65. this.$message.warning(\`未匹配到对应数据:\${code}\`);`;
  66. if (!s.includes(old)) throw new Error('anchor not found');
  67. s = s.replace(old, _new);
  68. fs.writeFileSync(path, s, 'utf8');
  69. console.log('OK');