yuan
5 小时以前 d24b6784857a9b2817736270a22ef198445703d9
src/views/productionManagement/productionOrder/Detail/index.vue
@@ -120,12 +120,12 @@
            <div v-else class="right-content">
              <el-table :data="reports" border height="420" v-loading="reportLoading">
                <el-table-column label="序号" type="index" width="60" align="center" />
                <el-table-column label="报工单号" prop="reportNo" min-width="140" show-overflow-tooltip />
                <el-table-column label="报工人员" prop="reportUser" min-width="120" show-overflow-tooltip />
                <el-table-column label="报工时间" prop="reportTime" min-width="160" show-overflow-tooltip />
                <el-table-column label="产出数量" prop="outputQty" min-width="110" />
                <el-table-column label="报工单号" prop="productNo" min-width="140" show-overflow-tooltip />
                <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="qualifiedQty" min-width="110" />
                <el-table-column label="不良数量" prop="badQty" min-width="110" />
                <el-table-column label="不良数量" prop="scrapQty" 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 }">
@@ -140,21 +140,45 @@
        </div>
      </div>
    </el-card>
    <el-dialog
      v-model="reportRecordDialogVisible"
      title="报工生产记录"
      width="680px"
      destroy-on-close
    >
      <div class="report-record-placeholder">
        <div>报工单号:{{ currentReportRow?.reportNo || "-" }}</div>
        <div>工序:{{ selectedProcess?.processName || "-" }}</div>
        <div class="placeholder-tip">弹框内容待定(后续补充详细生产记录)。</div>
      </div>
      <template #footer>
        <el-button @click="reportRecordDialogVisible = false">关闭</el-button>
      </template>
    </el-dialog>
<!--    <el-dialog-->
<!--      v-model="reportRecordDialogVisible"-->
<!--      title="报工生产记录"-->
<!--      width="680px"-->
<!--      destroy-on-close-->
<!--    >-->
<!--      <div class="report-record-placeholder">-->
<!--        <div>报工单号:{{ currentReportRow?.reportNo || "-" }}</div>-->
<!--        <div>工序:{{ selectedProcess?.processName || "-" }}</div>-->
<!--        <div class="placeholder-tip">弹框内容待定(后续补充详细生产记录)。</div>-->
<!--      </div>-->
<!--      <template #footer>-->
<!--        <el-button @click="reportRecordDialogVisible = false">关闭</el-button>-->
<!--      </template>-->
<!--    </el-dialog>-->
    <CopperPrintingForm
        v-if="copperPrintingFormVisible"
        v-model:isShow="copperPrintingFormVisible"
        :isEdit="false"
        :row="currentReportRow"
        @refreshData="fetchReportsForProcess(selectedProcess.value)"/>
    <VoltageSortingForm
        v-if="voltageSortingFormVisible"
        v-model:isShow="voltageSortingFormVisible"
        :isEdit="false"
        :row="currentReportRow"
        @refreshData="fetchReportsForProcess(selectedProcess.value)"/>
    <GranulationForm
        v-if="granulationFormVisible"
        v-model:isShow="granulationFormVisible"
        :isEdit="false"
        :row="currentReportRow"
        @refreshData="fetchReportsForProcess(selectedProcess.value)"/>
    <Detail
        v-if="reportRecordDialogVisible"
        v-model:isShow="reportRecordDialogVisible"
        @refreshData="fetchReportsForProcess(selectedProcess.value)"
        :row="currentReportRow"/>
  </div>
</template>
@@ -163,7 +187,10 @@
import { useRoute } from "vue-router";
import { getByProductOrderId } from "@/api/productionManagement/workOrder.js";
import { getByProductWorkOrderId } from "@/api/productionManagement/productionProductMain.js";
const VoltageSortingForm = defineAsyncComponent(() => import("@/views/productionManagement/workOrder/components/VoltageSortingForm.vue"));
const CopperPrintingForm = defineAsyncComponent(() => import("@/views/productionManagement/workOrder/components/CopperPrintingForm.vue"));
const GranulationForm = defineAsyncComponent(() => import("@/views/productionManagement/workOrder/components/GranulationForm.vue"));
const Detail = defineAsyncComponent(() => import("@/views/productionManagement/productionReporting/components/Detail.vue"));
const route = useRoute();
const header = computed(() => ({
@@ -176,6 +203,10 @@
// 工序数据(接口替换)
const processes = ref([]);
const copperPrintingFormVisible = ref(false);
const voltageSortingFormVisible = ref(false);
const granulationFormVisible = ref(false);
const normalizeStatus = (statusText, completionStatus, inputQty, outputQty) => {
  const s = statusText === null || statusText === undefined ? "" : String(statusText).trim();
@@ -271,19 +302,11 @@
const reportLoading = ref(false);
const normalizeReport = (item) => {
  // 报工记录:productNo/userName/createTime/quantity/qualifiedQty/scrapQty
  const outputQty = Number(item?.quantity ?? item?.outputQty ?? 0);
  const qualifiedQty = Number(item?.qualifiedQty ?? item?.completeQty ?? item?.goodQty ?? 0);
  const badQty = Number(item?.scrapQty ?? item?.badQty ?? 0);
  return {
    reportNo: item?.productNo ?? item?.reportNo ?? item?.productionReportNo ?? item?.id ?? "",
    reportUser: item?.userName ?? item?.reportUser ?? item?.createdByName ?? item?.reportUserName ?? "",
    reportTime: item?.createTime ?? item?.reportTime ?? item?.createdAt ?? item?.reportDate ?? "",
    outputQty: Number.isFinite(outputQty) ? outputQty : 0,
    qualifiedQty: Math.max(0, Number.isFinite(qualifiedQty) ? qualifiedQty : 0),
    badQty: Number.isFinite(badQty) ? Math.max(0, badQty) : 0,
    dealResult: item?.dealResult ?? item?.dealResultText ?? item?.description ?? "",
    ...item,
    quantity:  Math.max(0, Number.isFinite(item.quantity) ? item.quantity : 0),
    scrapQty:  Math.max(0, Number.isFinite(item.scrapQty) ? item.scrapQty : 0),
    qualifiedQty:  Math.max(0, Number.isFinite(item.qualifiedQty) ? item.qualifiedQty : 0),
  };
};
@@ -323,9 +346,17 @@
);
const viewReportRecord = (row) => {
  if (!row?.reportNo) return;
  if (!row?.productNo) return;
  currentReportRow.value = row;
  reportRecordDialogVisible.value = true;
  if (row.process ==='印铜' || row.process ==='印银') {
    copperPrintingFormVisible.value = true;
  } else if (row.process === '电压分选') {
    voltageSortingFormVisible.value = true;
  } else if (row.process === '造粒') {
    granulationFormVisible.value = true;
  } else {
    reportRecordDialogVisible.value = true;
  }
};
const reportRecordDialogVisible = ref(false);