src/components/dialog/Descriptions.vue
@@ -96,6 +96,11 @@
  fieldLabels: {
    type: Object,
    default: () => ({})
  },
  // 字段显示顺序
  fieldOrder: {
    type: Array,
    default: () => []
  }
});
@@ -113,25 +118,46 @@
  }
  const data = { ...props.formData };
  let result = {};
  let filteredResult = {};
  // 如果指定了包含字段,则只显示这些字段
  if (props.includeFields.length > 0) {
    props.includeFields.forEach(field => {
      if (data.hasOwnProperty(field)) {
        result[field] = data[field];
        filteredResult[field] = data[field];
      }
    });
  } else {
    // 否则排除指定字段
    Object.keys(data).forEach(key => {
      if (!props.excludeFields.includes(key)) {
        result[key] = data[key];
        filteredResult[key] = data[key];
      }
    });
  }
  return result;
  // 如果指定了字段顺序,则按顺序重新组织数据
  if (props.fieldOrder.length > 0) {
    const orderedResult = {};
    // 先按指定顺序添加字段
    props.fieldOrder.forEach(field => {
      if (filteredResult.hasOwnProperty(field)) {
        orderedResult[field] = filteredResult[field];
      }
    });
    // 再添加未在顺序中指定的其他字段
    Object.keys(filteredResult).forEach(key => {
      if (!props.fieldOrder.includes(key)) {
        orderedResult[key] = filteredResult[key];
      }
    });
    return orderedResult;
  }
  return filteredResult;
});
// 获取字段显示标签