huminmin
10 天以前 e1570f458b2ab42bb1a212be8de63134a50b2af1
src/views/officeProcessAutomation/ApproveManage/approve-list/components/ApproveDetailPanel.vue
@@ -19,9 +19,9 @@
            {{ approvalTypeLabel(row.approvalType) }}
          </span>
        </el-descriptions-item>
        <el-descriptions-item label="申请人编号">{{ row.applicantNo || "—" }}</el-descriptions-item>
        <el-descriptions-item label="申请人名称">{{ row.applicantName || "—" }}</el-descriptions-item>
        <el-descriptions-item label="申请摘要">{{ row.summary || "—" }}</el-descriptions-item>
        <el-descriptions-item label="发起人编号">{{ row.applicantNo || "—" }}</el-descriptions-item>
        <el-descriptions-item label="发起人名称">{{ row.applicantName || "—" }}</el-descriptions-item>
        <el-descriptions-item label="摘要">{{ row.summary || "—" }}</el-descriptions-item>
        <el-descriptions-item v-if="row.rejectReason"
                              label="驳回原因"
                              :span="2">
@@ -36,7 +36,7 @@
    <div class="detail-block">
      <div class="detail-block-title">填报内容</div>
      <!-- 默认表单展示 -->
      <FormPayloadFields v-if="!isSpecialApprovalType"
      <FormPayloadFields v-if="!isSpecialApprovalType && row.businessType !== 19"
                         :fields="formResolved.fields"
                         :form-payload="formResolved.formPayload"
                         readonly />
@@ -69,6 +69,39 @@
            </el-table>
          </div>
        </div>
      </template>
      <!-- 报工审批详情 -->
      <template v-else-if="row.businessType === 19">
        <div v-if="formResolved.fields.length || reportParamList.length" class="report-detail">
          <el-divider content-position="left">报工填报内容</el-divider>
          <el-descriptions v-if="formResolved.fields.length" :column="2" border>
            <el-descriptions-item
              v-for="field in formResolved.fields"
              :key="field.key"
              :label="field.label || field.key"
            >
              {{ formatFieldDisplayValue(field, formResolved.formPayload?.[field.key]) }}
            </el-descriptions-item>
          </el-descriptions>
          <div v-if="reportParamList.length" class="report-param-block">
            <el-divider content-position="left">报工参数</el-divider>
            <el-table :data="reportParamList" border size="small" style="width: 100%">
              <el-table-column label="参数名称" prop="paramName" min-width="180" show-overflow-tooltip />
              <el-table-column label="参数值" prop="inputValue" min-width="180" show-overflow-tooltip>
                <template #default="scope">
                  {{ scope.row.inputValue || '—' }}
                </template>
              </el-table-column>
              <el-table-column label="单位" prop="unit" min-width="100" show-overflow-tooltip>
                <template #default="scope">
                  {{ scope.row.unit || '—' }}
                </template>
              </el-table-column>
            </el-table>
          </div>
        </div>
        <el-empty v-else description="暂无报工填报内容" />
      </template>
      
      <!-- 采购审批详情 -->
@@ -188,6 +221,7 @@
    approvalStatusLabel,
    approvalStatusTagType,
    resolveInstanceFormFields,
    formatFieldDisplayValue,
  } from "../approveListConstants.js";
  import FormPayloadFields from "./FormPayloadFields.vue";
@@ -207,6 +241,25 @@
  // 详情数据(直接使用传入的 detail-data 参数)
  const detailData = computed(() => {
    return props.detailData || {};
  });
  const reportParamList = computed(() => {
    const payload = formResolved.value?.formPayload || {};
    const sources = [
      payload.productionOperationParamList,
      payload.reportParamList,
      payload.paramList,
      props.row?.productionOperationParamList,
      props.row?.reportParamList,
      props.row?.paramList,
    ];
    const list = sources.find(item => Array.isArray(item) && item.length) || [];
    return list.map((param, index) => ({
      id: param?.id ?? index,
      paramName: param?.paramName || param?.parameterName || param?.name || `参数${index + 1}`,
      inputValue: param?.inputValue ?? param?.value ?? param?.paramValue ?? '',
      unit: param?.unit || '',
    }));
  });
  const attachmentList = computed(() => {
@@ -246,6 +299,10 @@
    color: var(--el-color-danger);
  }
  .report-param-block {
    margin-top: 20px;
  }
  .attachment-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
@@ -283,4 +340,4 @@
    align-items: center;
    flex-shrink: 0;
  }
</style>
</style>