2 小时以前 5367b3b4d92588c4e76728e6bd4ad6aae0cbb967
src/views/mes/workbench/components/tabs/RecordParamTab.vue
@@ -24,8 +24,12 @@
defineOptions({ name: 'WorkbenchRecordParamTab' });
const props = defineProps<{
  /** 当前任务编号(用于监听任务切换) */
  taskId?: number;
  /** 当前工单编号 */
  workOrderId?: number;
  /** 当前工作站编号 */
  workstationId?: number;
}>();
// --- 模式 ---
@@ -156,6 +160,20 @@
  await paramFormApi.resetForm();
  await nextTick();
  await paramFormApi.setState({ schema: [...baseSchemas, ...paramSchemas] });
  // 显式设置已有值,确保表单模型绑定正确
  if (existingValues && existingValues.size > 0) {
    for (const [detailId, value] of existingValues) {
      // 根据参数类型转换值,数值类型需要转为 number
      const detail = details.find((d) => d.id === detailId);
      const paramType = detail?.paramType ?? 1;
      let convertedValue: any = value;
      if ((paramType === 1 || paramType === 2) && value != null && value !== '') {
        convertedValue = Number(value);
      }
      await paramFormApi.setFieldValue(`param_${detailId}`, convertedValue);
    }
  }
}
/** 新增参数记录 */
@@ -282,7 +300,8 @@
  recordLoading.value = true;
  try {
    const result = await getWorkOrderParamRecordPage({
      workOrderId: props.workOrderId,
      taskId: props.workOrderId,
      workstationId: props.workstationId,
      pageNo: 1,
      pageSize: 100,
    });
@@ -292,20 +311,15 @@
  }
}
// 工单变更时加载记录
// 任务/工单/工作站变更时加载记录
watch(
  () => props.workOrderId,
  () => [props.taskId, props.workOrderId, props.workstationId],
  () => {
    handleCancelForm();
    refreshRecordList();
  },
  { immediate: true },
);
/** 格式化参数值展示 */
function formatParamDisplay(detail: MesProWorkOrderParamRecordApi.ParamRecordDetail) {
  const unit = detail.unitMeasureName ? ` ${detail.unitMeasureName}` : '';
  return `${detail.paramName}: ${detail.paramValue ?? '-'}${unit}`;
}
</script>
<template>
@@ -410,7 +424,7 @@
      <!-- 无工单提示 -->
      <div v-if="!workOrderId" class="record-param-tab__empty">
        <IconifyIcon icon="lucide:alert-circle" class="record-param-tab__empty-icon" />
        <p>请先从左侧选择一条工单任务</p>
        <p>请先选择工作站和工单任务</p>
      </div>
      <!-- 空列表 -->
@@ -450,13 +464,16 @@
            备注:{{ record.remark }}
          </div>
          <div class="record-param-tab__card-params">
            <span
            <div
              v-for="d in record.details"
              :key="d.id"
              class="record-param-tab__param-tag"
              class="record-param-tab__param-row"
            >
              {{ formatParamDisplay(d) }}
            </span>
              <span class="record-param-tab__param-name">{{ d.paramName }}</span>
              <span class="record-param-tab__param-value">
                {{ d.paramValue ?? '-' }}<span v-if="d.unitMeasureName" class="record-param-tab__param-unit"> {{ d.unitMeasureName }}</span>
              </span>
            </div>
          </div>
        </div>
      </div>
@@ -680,20 +697,38 @@
}
.record-param-tab__card-params {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px 16px;
  margin-top: 8px;
}
.record-param-tab__param-tag {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 4px;
.record-param-tab__param-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 13px;
  line-height: 1.6;
  padding: 2px 0;
}
.record-param-tab__param-name {
  flex-shrink: 0;
  color: #8c8c8c;
  min-width: 100px;
  &::after {
    content: ':';
  }
}
.record-param-tab__param-value {
  color: #1a1a1a;
  font-weight: 500;
}
.record-param-tab__param-unit {
  color: #8c8c8c;
  font-size: 12px;
  background: #f6ffed;
  color: #389e0d;
  border: 1px solid #d9f7be;
}
</style>