于杰
2025-11-04 d1b864e61657818d65d85b57f6e7c3a6ab016362
修改优化设置部分界面
2个文件已修改
167 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue 128 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/OptimizeParms.vue
@@ -65,7 +65,6 @@
    parsedData.optimization.yShapeJoinOptimization = parsedData.optimization.yShapeJoinOptimization !== undefined ? parsedData.optimization.yShapeJoinOptimization : true;
    parsedData.optimization.autoMiddleEmptyPairing = parsedData.optimization.autoMiddleEmptyPairing !== undefined ? parsedData.optimization.autoMiddleEmptyPairing : true;
    parsedData.optimization.smallPieceRotationProhibited = parsedData.optimization.smallPieceRotationProhibited !== undefined ? parsedData.optimization.smallPieceRotationProhibited : true;
    // parsedData.optimization.maxFramesOnSite = parsedData.optimization.maxFramesOnSite !== undefined ? parsedData.optimization.maxFramesOnSite : 10;
    parsedData.optimization.bendEdgeDistance = parsedData.optimization.bendEdgeDistance !== undefined ? parsedData.optimization.bendEdgeDistance : 10;
@@ -75,10 +74,6 @@
    // parsedData.optimization.uniformShapeEdgeTrimAmount = parsedData.optimization.uniformShapeEdgeTrimAmount !== undefined ? parsedData.optimization.uniformShapeEdgeTrimAmount : 0;
    parsedData.optimization.optimizationMethod = parsedData.optimization.optimizationMethod !== undefined ? parsedData.optimization.optimizationMethod : '1';
    parsedData.optimization.travType = parsedData.optimization.travType !== undefined ? parsedData.optimization.travType : 'X';
    // parsedData.optimization.optimizationIterations = parsedData.optimization.optimizationIterations !== undefined ? parsedData.optimization.optimizationIterations : 0;
    // parsedData.optimization.finishedProductGrindingAmount = parsedData.optimization.finishedProductGrindingAmount !== undefined ? parsedData.optimization.finishedProductGrindingAmount : 0;
    // parsedData.optimization.rawPieceEdgeTrimAmount = parsedData.optimization.rawPieceEdgeTrimAmount !== undefined ? parsedData.optimization.rawPieceEdgeTrimAmount : 0;
    // parsedData.optimization.finishedSinglePieceBelowGrindingAmount = parsedData.optimization.finishedSinglePieceBelowGrindingAmount !== undefined ? parsedData.optimization.finishedSinglePieceBelowGrindingAmount : 0;
    parsedData.optimization.rackCycleQty = parsedData.optimization.rackCycleQty !== undefined ? parsedData.optimization.rackCycleQty :5;
@@ -86,7 +81,7 @@
    parsedData.display.themeColor = parsedData.display.themeColor !== undefined ? parsedData.display.themeColor : '#5168c8';
    parsedData.display.includeProductEdge = parsedData.display.includeProductEdge !== undefined ? parsedData.display.includeProductEdge : true;
    parsedData.display.includeIrregularEdge = parsedData.display.includeIrregularEdge !== undefined ? parsedData.display.includeIrregularEdge : true;
    parsedData.display.mergeByFrameNumber = parsedData.display.mergeByFrameNumber !== undefined ? parsedData.display.mergeByFrameNumber : true;
    // parsedData.display.mergeByFrameNumber = parsedData.display.mergeByFrameNumber !== undefined ? parsedData.display.mergeByFrameNumber : true;
    parsedData.display.frameNumber = parsedData.display.frameNumber !== undefined ? parsedData.display.frameNumber : true;
    parsedData.display.orderNumber = parsedData.display.orderNumber !== undefined ? parsedData.display.orderNumber : true;
    parsedData.display.productName = parsedData.display.productName !== undefined ? parsedData.display.productName : true;
@@ -124,14 +119,11 @@
    parsedData.server.optimaMarkWidth = parsedData.server.optimaMarkWidth !== undefined ? parsedData.server.optimaMarkWidth : 8;
    parsedData.server.optimaMarkHeight = parsedData.server.optimaMarkHeight !== undefined ? parsedData.server.optimaMarkHeight : 8;
    parsedData.server.output_format = parsedData.server.output_format !== undefined ? parsedData.server.output_format : '';
    parsedData.server.cutting_code_save_path = parsedData.server.cutting_code_save_path !== undefined ? parsedData.server.cutting_code_save_path : '';
    parsedData.server.open_folder_after_save = parsedData.server.open_folder_after_save !== undefined ? parsedData.server.open_folder_after_save : '';
    parsedData.server.g_code_file_format = parsedData.server.g_code_file_format !== undefined ? parsedData.server.g_code_file_format : '';
    parsedData.server.trf_file_save_path = parsedData.server.trf_file_save_path !== undefined ? parsedData.server.trf_file_save_path : '';
    parsedData.server.btl_file_save_path = parsedData.server.btl_file_save_path !== undefined ? parsedData.server.btl_file_save_path : '';
    parsedData.server.optima_file_save_path = parsedData.server.optima_file_save_path !== undefined ? parsedData.server.optima_file_save_path : '';
    parsedData.server.optimization_depth_limit_enable = parsedData.server.optimization_depth_limit_enable !== undefined ? parsedData.server.optimization_depth_limit_enable : '';
    parsedData.server.original_sheet_material_calculation = parsedData.server.original_sheet_material_calculation !== undefined ? parsedData.server.original_sheet_material_calculation : '';
    // 为 tempering 参数添加默认值
    parsedData.tempering.furnaceLength = parsedData.tempering.furnaceLength !== undefined ? parsedData.tempering.furnaceLength : 5000;
@@ -163,22 +155,18 @@
// 参数映射表,用于将英文参数名映射为中文名称和类型
const paramMapping = {
  optimizationMethod: { name: '优化方式', type: 'select' },
  smallPieceRotationProhibited: { name: '小片允许旋转', type: 'checkbox' },
  cutterOriginPosition: { name: '切割机原点位置', type: 'select' },
  travType: { name: '横切', type: 'select' },
  uniformShapeEdgeTrimAmount: { name: '统一设置异形修边量', type: 'text' },
  yShapeJoinOptimization: { name: '异形拼接优化', type: 'checkbox' },
  autoMiddleEmptyPairing: { name: '自动中空配对', type: 'checkbox' },
  smallPieceRotationProhibited: { name: '小片旋转', type: 'checkbox' },
  optimizationIterations: { name: '重复优化次数', type: 'text' },
  maxFramesOnSite: { name: '现场最大可放架子数量', type: 'text' },
  rackCycleQty: { name: '循环落架数', type: 'text' },
  bendEdgeDistance: { name: '掰边距(mm)', type: 'text' },
  positiveTolerance: { name: '正公差(mm)', type: 'text' },
  negativeTolerance: { name: '负公差(mm)', type: 'text' },
  cutterOriginPosition: { name: '切割机原点位置', type: 'select' },
  uniformShapeEdgeTrimAmount: { name: '统一设置异形修边量', type: 'text' },
  optimizationMethod: { name: '优化方式', type: 'select' },
  travType: { name: '横切', type: 'select' },
  optimizationIterations: { name: '重复优化次数', type: 'text' },
  finishedProductGrindingAmount: { name: '成品默认磨量', type: 'text' },
  rawPieceEdgeTrimAmount: { name: '原片默认修边量', type: 'text' },
  finishedSinglePieceBelowGrindingAmount: { name: '成品单片小于多少时磨量为', type: 'text' },
  rackCycleQty: { name: '循环落架数', type: 'text' }
};
// 动态生成参数列表
@@ -226,6 +214,14 @@
        <div class="sidebar-header">输出</div>
        <div class="sidebar-content">结果输出设置</div>
      </div>
      <div
          @click="selectComponent('mark')"
          :class="{ active: currentComponent === 'mark' }"
          class="sidebar-item"
      >
        <div class="sidebar-header">打标</div>
        <div class="sidebar-content">打标设置</div>
      </div>
      <div
        @click="selectComponent('tempering')"
@@ -250,7 +246,7 @@
        <div class="display-settings">
          <h2>版图显示设置</h2>
          <div class="form-group">
            <label>矩形成品显示颜色</label>
            <label>版图显示颜色设置</label>
            <input type="color" v-model="settings.display.themeColor" />
          </div>
          <div class="form-group">
@@ -260,10 +256,6 @@
          <div class="form-group">
            <label>异形尺寸包含磨边量</label>
            <input type="checkbox" v-model="settings.display.includeIrregularEdge" />
          </div>
          <div class="form-group">
            <label>按架号合并版图</label>
            <input type="checkbox" v-model="settings.display.mergeByFrameNumber" />
          </div>
          <div style="border: 1px solid #d2d0d0; margin-top: 20px;">
            <div style="background-color: #D5EAFF;">小片信息</div>
@@ -446,7 +438,50 @@
              <label for="multiFile">多文件</label>
            </div>
          </div>
          <div style="border: 2px solid #d2d0d0; margin-top: 10px;padding: 4px; border-radius: 8px;">
          <div class="form-group">
            <label>工程文件保存路径</label>
            <input type="text" v-model="settings.server.output_format" />
          </div>
<!--          <div class="form-group">-->
<!--            <label>切割代码保存路径</label>-->
<!--            <input type="text" v-model="settings.server.cutting_code_save_path" />-->
<!--          </div>-->
          <div class="form-group">
            <label>保存文件后打开所在文件夹</label>
            <input type="text" v-model="settings.server.open_folder_after_save" />
          </div>
          <div class="form-group">
            <label>G代码文件格式</label>
            <input type="text" v-model="settings.server.g_code_file_format" />
          </div>
<!--          <div class="form-group">-->
<!--            <label>TRF文件保存路径</label>-->
<!--            <input type="text" v-model="settings.server.trf_file_save_path" />-->
<!--          </div>-->
          <div class="form-group">
            <label>保特罗文件保存路径</label>
            <input type="text" v-model="settings.server.btl_file_save_path" />
          </div>
          <div class="form-group">
            <label>OPTIMA文件保存路径</label>
            <input type="text" v-model="settings.server.optima_file_save_path" />
          </div>
          <div class="form-group">
            <label>优化深度限制启用</label>
            <input type="text" v-model="settings.server.optimization_depth_limit_enable" />
          </div>
<!--          <div class="form-group">-->
<!--            <label>原片切材率计算</label>-->
<!--            <input type="text" v-model="settings.server.original_sheet_material_calculation" />-->
<!--          </div>-->
        </div>
      </template>
      <template v-else-if="currentComponent === 'mark'">
        <div class="display-settings">
          <h2>打标设置</h2>
          <div style=" margin-top: 10px;padding: 4px; border-radius: 8px;">
            <div class="form-group">
              <label>是否打标</label>
              <div style="margin-left: 3px;"></div>
@@ -570,43 +605,6 @@
              <input type="text" v-model="settings.server.optimaMarkHeight" />
            </div>
          </div>
          <div class="form-group">
            <label>工程文件保存路径</label>
            <input type="text" v-model="settings.server.output_format" />
          </div>
          <div class="form-group">
            <label>切割代码保存路径</label>
            <input type="text" v-model="settings.server.cutting_code_save_path" />
          </div>
          <div class="form-group">
            <label>保存文件后打开所在文件夹</label>
            <input type="text" v-model="settings.server.open_folder_after_save" />
          </div>
          <div class="form-group">
            <label>G代码文件格式</label>
            <input type="text" v-model="settings.server.g_code_file_format" />
          </div>
          <div class="form-group">
            <label>TRF文件保存路径</label>
            <input type="text" v-model="settings.server.trf_file_save_path" />
          </div>
          <div class="form-group">
            <label>保特罗文件保存路径</label>
            <input type="text" v-model="settings.server.btl_file_save_path" />
          </div>
          <div class="form-group">
            <label>OPTIMA文件保存路径</label>
            <input type="text" v-model="settings.server.optima_file_save_path" />
          </div>
          <div class="form-group">
            <label>优化深度限制启用</label>
            <input type="text" v-model="settings.server.optimization_depth_limit_enable" />
          </div>
          <div class="form-group">
            <label>原片切材率计算</label>
            <input type="text" v-model="settings.server.original_sheet_material_calculation" />
          </div>
        </div>
      </template>
@@ -622,11 +620,11 @@
            <input type="number" v-model="settings.tempering.furnaceWidth" step="1" />
          </div>
          <div class="form-group">
            <label>最大装载率(%)</label>
            <label>钢化最大装载率(%)</label>
            <input type="number" v-model="settings.tempering.maxLoadingRate" step="1" />
          </div>
          <div class="form-group">
            <label>混乱程度(%)</label>
            <label>工程混排等级(%)</label>
            <input type="number" v-model="settings.tempering.chaosLevel" step="1" />
          </div>
          <div class="form-group">
north-glass-erp/northglass-erp/src/views/pp/glassOptimize/page/OptimizeCompute.vue
@@ -1,7 +1,7 @@
<script setup>
import {ref, computed, watch} from "vue";
import {Connection} from "@element-plus/icons-vue";
import { ElMessage, ElMessageBox } from 'element-plus'; // 添加这行
import { ElMessage, ElMessageBox } from 'element-plus';
import {useRoute, useRouter} from "vue-router";
import useOrderInfoStore from "@/stores/sd/order/orderInfo";
import requestOptimize from "@/utils/requestOptimize";
@@ -224,46 +224,9 @@
  }
};
// watch(
//     () => progress.value,
//     (newValue) => {
//       if (newValue === 100 && orderInfo.optimizeData && orderInfo.optimizeData.optimalResults) {
//         // 根据接口返回的 layouts 数据构建版图统计
//         const layouts = orderInfo.optimizeData.optimalResults.layouts;
//         const newOriginalFilm = [];
//
//         layouts.forEach(items => {
//           const existingItem = newOriginalFilm.find(
//               item => item.width === items.width && item.height === items.height
//           );
//
//           if (existingItem) {
//             existingItem.count += 1;
//           } else {
//             newOriginalFilm.push({
//               width: items.width,
//               height: items.height,
//               upTrim: items.upTrim,
//               downTrim: items.downTrim,
//               leftTrim: items.leftTrim,
//               rightTrim: items.rightTrim,
//               stockCode: items.stockCode,
//               count: 1
//             });
//           }
//         });
//         // 更新 originalFilm
//         originalFilm.value = newOriginalFilm;
//         console.log('设置 originalFilm 数据:', newOriginalFilm);
//       }
//     }
// );
// 简化 watch 函数
watch(
    () => progress.value,
    (newValue) => {
      // 进度更新时不需要额外处理,因为已经在 startTimer 中处理了 originalFilm
      console.log('优化进度更新:', newValue);
    }
);