zouyu
15 小时以前 6570b36a352edd87532dcf13a124181d4d815a39
src/views/productionManagement/productionOrder/index.vue
@@ -8,7 +8,7 @@
                    placeholder="请输入"
                    clearable
                    prefix-icon="Search"
                    style="width: 160px;"
                    style="width: 160px"
                    @change="handleQuery" />
        </el-form-item>
        <el-form-item label="产品名称:">
@@ -16,7 +16,7 @@
                    placeholder="请输入"
                    clearable
                    prefix-icon="Search"
                    style="width: 160px;"
                    style="width: 160px"
                    @change="handleQuery" />
        </el-form-item>
        <el-form-item label="规格:">
@@ -24,13 +24,13 @@
                    placeholder="请输入"
                    clearable
                    prefix-icon="Search"
                    style="width: 160px;"
                    style="width: 160px"
                    @change="handleQuery" />
        </el-form-item>
        <el-form-item label="状态:">
          <el-select v-model="searchForm.status"
                     placeholder="请选择"
                     style="width: 160px;"
                     style="width: 160px"
                     @change="handleQuery">
            <el-option label="待开始"
                       value="1" />
@@ -38,8 +38,8 @@
                       value="2" />
            <el-option label="已完成"
                       value="3" />
            <el-option label="已取消"
                       value="4" />
            <!--            <el-option label="已取消"-->
            <!--                       value="4" />-->
            <el-option label="已结束"
                       value="5" />
          </el-select>
@@ -67,13 +67,17 @@
                :tableLoading="tableLoading"
                :row-class-name="tableRowClassName"
                :isSelection="true"
                :selectable="row => !row.endOrder"
                :selectable="(row) => !row.endOrder"
                @selection-change="handleSelectionChange"
                @pagination="pagination">
        <template #completionStatus="{ row }">
          <el-progress :percentage="toProgressPercentage(row?.completionStatus)"
                       :color="progressColor(toProgressPercentage(row?.completionStatus))"
                       :status="toProgressPercentage(row?.completionStatus) >= 100 ? 'success' : ''" />
                       :status="
              toProgressPercentage(row?.completionStatus) >= 100
                ? 'success'
                : ''
            " />
        </template>
        <template #processRouteStatus="{ row }">
          <div v-if="row.processRouteStatus && row.processRouteStatus.length"
@@ -85,7 +89,14 @@
                <div class="step-circle"
                     :class="{ 'is-completed': item.percentage >= 100 }">
                  <span class="step-percentage"
                        :style="{ color: item.percentage >= 70 ? item.percentage >= 100 ? '#67c23a' : '#f56c6c' : '#000' }">{{ item.percentage }}%</span>
                        :style="{
                      color:
                        item.percentage >= 70
                          ? item.percentage >= 100
                            ? '#67c23a'
                            : '#f56c6c'
                          : '#000',
                    }">{{ item.percentage }}%</span>
                </div>
                <div class="step-name">{{ item.name }}</div>
              </div>
@@ -104,7 +115,7 @@
        <el-form-item label="工艺路线">
          <el-select v-model="bindForm.routeId"
                     placeholder="请选择工艺路线"
                     style="width: 100%;"
                     style="width: 100%"
                     :loading="bindRouteLoading">
            <el-option v-for="item in routeOptions"
                       :key="item.id"
@@ -125,18 +136,23 @@
    <!-- 来源数据弹窗 -->
    <el-dialog v-model="sourceDataDialogVisible"
               title="来源数据"
               width="1200px">
               width="1200px"
               top="5vh"
               class="source-data-dialog"
               append-to-body>
      <div v-if="sourceRowData"
           class="applyno-summary1">
        <div class="summary-item">
          <span class="summary-label">产品名称:</span>
          <span class="summary-value">
            <el-tag type="primary">{{ sourceRowData.productName || '-' }}</el-tag>
            <el-tag type="primary">{{
              sourceRowData.productName || "-"
            }}</el-tag>
          </span>
        </div>
        <div class="summary-item">
          <span class="summary-label">规格:</span>
          <span class="summary-value">{{ sourceRowData.model || '-' }}</span>
          <span class="summary-value">{{ sourceRowData.model || "-" }}</span>
        </div>
        <div class="summary-item">
          <span class="summary-label">订单需求数量:</span>
@@ -152,39 +168,49 @@
              <div class="info-grid">
                <div class="info-item">
                  <div class="info-label">计划号</div>
                  <div class="info-value">{{ item.mpsNo || '-' }}</div>
                  <div class="info-value">{{ item.mpsNo || "-" }}</div>
                </div>
                <div class="info-item">
                  <div class="info-label">数据来源</div>
                  <div class="info-value">
                    <el-tag :type="item.source === '销售' ? 'primary' : 'warning'">
                      {{ item.source || '未知' }}
                      {{ item.source || "未知" }}
                    </el-tag>
                  </div>
                </div>
                <div class="info-item">
                  <div class="info-label">合同号</div>
                  <div class="info-value">{{ item.salesContractNo || '-' }}</div>
                  <div class="info-value">
                    {{ item.salesContractNo || "-" }}
                  </div>
                </div>
                <div class="info-item">
                  <div class="info-label">客户名称</div>
                  <div class="info-value">{{ item.customerName || '-' }}</div>
                  <div class="info-value">{{ item.customerName || "-" }}</div>
                </div>
                <div class="info-item">
                  <div class="info-label">项目名称</div>
                  <div class="info-value">{{ item.projectName || '-' }}</div>
                  <div class="info-value">{{ item.projectName || "-" }}</div>
                </div>
                <div class="info-item">
                  <div class="info-label">计划需求数量</div>
                  <div class="info-value">{{ item.qtyRequired || 0 }} {{ item.unit || '' }}</div>
                  <div class="info-value">
                    {{ item.qtyRequired || 0 }} {{ item.unit || "" }}
                  </div>
                </div>
                <div class="info-item">
                  <div class="info-label">单位</div>
                  <div class="info-value">{{ item.unit || '-' }}</div>
                  <div class="info-value">{{ item.unit || "-" }}</div>
                </div>
                <div class="info-item">
                  <div class="info-label">需求日期</div>
                  <div class="info-value">{{ item.requiredDate ? dayjs(item.requiredDate).format('YYYY-MM-DD') : '-' }}</div>
                  <div class="info-value">
                    {{
                      item.requiredDate
                        ? dayjs(item.requiredDate).format("YYYY-MM-DD")
                        : "-"
                    }}
                  </div>
                </div>
              </div>
            </div>
@@ -378,7 +404,8 @@
        {
          name: "绑定工艺路线",
          type: "text",
          showHide: row => !row.processRouteCode && !row.endOrder,
          showHide: row =>
            !row.processRouteCode && !row.endOrder && row.status !== 3,
          clickFun: row => {
            openBindRouteDialog(row, "add");
          },
@@ -386,7 +413,8 @@
        {
          name: "更换工艺路线",
          type: "text",
          showHide: row => row.processRouteCode && !row.endOrder,
          showHide: row =>
            row.processRouteCode && !row.endOrder && row.status !== 3,
          clickFun: row => {
            openBindRouteDialog(row, "change");
          },
@@ -487,7 +515,7 @@
    if (!Number.isFinite(n)) return 0;
    if (n <= 0) return 0;
    if (n >= 100) return 100;
    return Math.round(n);
    return parseFloat(n.toFixed(2));
  };
  // 30/50/80/100 分段颜色:红/橙/蓝/绿
@@ -726,7 +754,7 @@
          technologyRoutingId: data.technologyRoutingId,
          orderId,
          type: "order",
          editable: !row.endOrder,
          editable: !row.endOrder && row.status !== 3,
        },
      });
    } catch (e) {
@@ -946,13 +974,19 @@
  .source-table-container {
    margin-top: 20px;
    flex: 1;
    min-height: 0;
    max-height: 500px;
    overflow: auto;
  }
  .source-data-cards-container {
    display: flex;
    flex-direction: column;
    gap: 16px;
    max-height: 500px;
    flex: 1;
    min-height: 0;
    max-height: none;
    overflow-y: auto;
    padding: 10px;
    background-color: #f5f7fa;
@@ -1022,4 +1056,20 @@
      }
    }
  }
  .source-data-dialog {
    .el-dialog {
      display: flex;
      flex-direction: column;
      max-height: 90vh;
    }
    .el-dialog__body {
      flex: 1;
      min-height: 0;
      display: flex;
      flex-direction: column;
      overflow: hidden;
    }
  }
</style>