huminmin
2026-03-31 de83f5112fecda011bce0192dce152e66bb56f87
src/views/productionManagement/productionOrder/Detail/index.vue
@@ -11,6 +11,7 @@
          <span class="mr12">生产批号:{{ header.lotNo || "-" }}</span>
          <span class="mr12">产品名称:{{ header.productCategory || "-" }}</span>
          <span class="mr12">规格:{{ header.specificationModel || "-" }}</span>
          <span class="mr12">料号:{{ header.materialCode || "-" }}</span>
        </div>
      </div>
    </el-card>
@@ -89,6 +90,10 @@
                        <div class="grid-value">{{ p.outputQty ?? 0 }}</div>
                      </div>
                      <div class="grid-item">
                        <div class="grid-label">报废数量</div>
                        <div class="grid-value success">{{ p.scrapQty ?? 0 }}</div>
                      </div>
                      <div class="grid-item">
                        <div class="grid-label">合格数量</div>
                        <div class="grid-value success">{{ p.qualifiedQty ?? 0 }}</div>
                      </div>
@@ -124,8 +129,9 @@
                <el-table-column label="报工人员" prop="nickName" min-width="120" show-overflow-tooltip />
                <el-table-column label="报工时间" prop="createTime" min-width="160" show-overflow-tooltip />
                <el-table-column label="产出数量" prop="quantity" min-width="110" />
                <el-table-column label="报废数量" prop="scrapQty" min-width="110" />
                <el-table-column label="合格数量" prop="qualifiedQty" min-width="110" />
                <el-table-column label="不良数量" prop="scrapQty" min-width="110" />
                <el-table-column label="不良数量" prop="defectiveQuantity" min-width="110" />
                <el-table-column label="不合格处理" prop="dealResult" min-width="160" show-overflow-tooltip />
                <el-table-column label="操作" width="150" fixed="right">
                  <template #default="{ row }">
@@ -199,6 +205,7 @@
  lotNo: route.query.lotNo,
  productCategory: route.query.productCategory,
  specificationModel: route.query.specificationModel,
  materialCode: route.query.materialCode,
}));
// 工序数据(接口替换)
@@ -232,13 +239,14 @@
const normalizeProcess = (item) => {
  // 字段以接口约定为准(你给的截图字段映射)
  // 工序:completionStatus/statusText/processNo/scrapRate/planQuantity/completeQuantity/completeQty/scrapQty
  const inputQty = Number(item?.planQuantity ?? item?.inputQty ?? 0);
  const outputQty = Number(item?.completeQuantity ?? item?.outputQty ?? 0);
  // 工序:completionStatus/statusText/processNo/defectiveRate/planQuantity/completeQuantity/completeQty/scrapQty
  const inputQty = Number(item?.inputQty ?? 0);
  const outputQty = Number(item?.totalQty ?? item?.outputQty ?? 0);
  const qualifiedQty = Number(item?.completeQty ?? item?.qualifiedQty ?? item?.goodQty ?? 0);
  const badQty = Number(item?.scrapQty ?? item?.badQty ?? item?.defectQty ?? 0);
  const badQty = Number(item?.defectiveQuantity ?? item?.badQty ?? item?.defectQty ?? 0);
  const scrapQty = Number(item?.scrapQty ?? 0);
  const completionStatus = Number(item?.completionStatus ?? 0);
  const scrapRate = Number(item?.scrapRate ?? NaN);
  const defectiveRate = Number(item?.defectiveRate ?? NaN);
  const status = normalizeStatus(item?.statusText ?? item?.status ?? item?.workStatus ?? item?.processStatus ?? item?.state, completionStatus, inputQty, outputQty);
@@ -250,8 +258,9 @@
    outputQty: Number.isFinite(outputQty) ? outputQty : 0,
    qualifiedQty: Math.max(0, Number.isFinite(qualifiedQty) ? qualifiedQty : 0),
    badQty: Math.max(0, Number.isFinite(badQty) ? badQty : 0),
    scrapQty: Math.max(0, Number.isFinite(scrapQty) ? scrapQty : 0),
    completionStatus: Number.isFinite(completionStatus) ? completionStatus : 0,
    scrapRate: Number.isFinite(scrapRate) ? scrapRate : null,
    defectiveRate: Number.isFinite(defectiveRate) ? defectiveRate : null,
    status,
  };
};
@@ -417,11 +426,11 @@
// 不良率:不良数量 / 产出数量(先按此口径,后续对接接口可调整)
const defectRateText = (p) => {
  // 优先使用接口字段 scrapRate(你给的截图“不良率”)
  const scrapRate = Number(p?.scrapRate ?? NaN);
  if (Number.isFinite(scrapRate)) {
    // 有些接口 scrapRate 可能是 0~1 或 0~100,这里做一个简单判断
    const percent = scrapRate <= 1 ? scrapRate * 100 : scrapRate;
  // 优先使用接口字段 defectiveRate(你给的截图“不良率”)
  const defectiveRate = Number(p?.defectiveRate ?? NaN);
  if (Number.isFinite(defectiveRate)) {
    // 有些接口 defectiveRate 可能是 0~1 或 0~100,这里做一个简单判断
    const percent = defectiveRate <= 1 ? defectiveRate * 100 : defectiveRate;
    return `${percent.toFixed(2)}%`;
  }
@@ -740,7 +749,7 @@
  .step-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
    .grid-item {
      background: #ffffff;