无人机管理后台前端(已迁走)
张含笑
2025-08-29 c003635a8ac4c80b39e6b3c2808bc4cf3ed58a13
feat:修改方法
1 files modified
62 ■■■■■ changed files
src/views/resource/components/spotDetails.vue 62 ●●●●● patch | view | raw | blame | history
src/views/resource/components/spotDetails.vue
@@ -164,23 +164,22 @@
const spotTypeOptions = ref([]);
const infoList = ref([
  { name: '文件名称', value: '', field: 'file_name', editable: true },
  { name: '图斑类型', value: '', field: 'patches_type_desc', editable: true },
  { name: '图斑类型', value: '', field: 'lot_type_id', editable: true },
  { name: '图斑数量', value: '', field: 'patches_num', editable: false },
  { name: '异常图斑数量', value: '', field: 'exception_num', editable: false },
  { name: '行政区划', value: '', field: 'areaName', editable: false },
  { name: '数据来源', value: '', field: 'dataFrom', editable: false },
  { name: '创建时间', value: '', field: 'create_time', editable: false },
  { name: '创建人', value: '', field: 'user_name', editable: false },
]);
watch(
  () => props.spotTypeOption,
  newOptions => {
    if (newOptions) {
      spotTypeOptions.value = newOptions;
    }
  },
  { immediate: true }
);
])
watch(() => props.spotTypeOption, (newOptions) => {
  if (newOptions) {
    spotTypeOptions.value = newOptions.map(opt => ({
      label: opt.label,
      value: String(opt.value)
    }));
  }
}, { immediate: true });
watch(
  () => props.detailList,
  newVal => {
@@ -190,15 +189,38 @@
  },
  { immediate: true }
);
// 更新infoList的方法
const updateInfoList = detailData => {
// 将 lot_type_id 转换为对应的 label
const getPatchTypeLabel = (lotTypeId) => {
  const option = spotTypeOptions.value.find(opt => opt.value === String(lotTypeId));
  return option ? option.label : '';
};
const updateInfoList = (detailData) => {
  infoList.value = infoList.value.map(item => {
    // 根据field字段匹配props.detailList中的值
    const fieldValue = detailData[item.field];
    let value = detailData[item.field] !== undefined ? detailData[item.field] : item.value;
    // 处理图斑类型字段
    if (item.name === '图斑类型') {
      // 如果有 patches_type_desc,显示它(但存储的是 lot_type_id)
      if (detailData.patches_type_desc !== undefined) {
        return {
          ...item,
          value: detailData.patches_type_desc,
          // 保留原始 lot_type_id 用于提交
          originalValue: detailData.lot_type_id
        };
      }
      // 否则根据 lot_type_id 查找对应的 label
      else if (detailData.lot_type_id !== undefined) {
        return {
          ...item,
          value: getPatchTypeLabel(detailData.lot_type_id),
          originalValue: detailData.lot_type_id
        };
      }
    }
    return {
      ...item,
      value: fieldValue !== undefined ? fieldValue : item.value,
      value: value
    };
  });
};
@@ -396,13 +418,13 @@
const handleSave = () => {
  const fileNameItem = infoList.value.find(item => item.name === '文件名称');
  const patchTypeItem = infoList.value.find(item => item.name === '图斑类型');
  const updateParams = {
    file_name: fileNameItem?.value || '',
    lot_type_id: patchTypeItem?.value || '',
    type: patchTypeItem?.value || '',
    lot_type_id: patchTypeItem?.originalValue || patchTypeItem?.value || '',
    type: patchTypeItem?.originalValue || patchTypeItem?.value || '',
    id: props.detailList.id,
  };
  console.log('保存', updateParams);
  patchEditApi(updateParams).then(res => {
    ElMessage.success(res.data.data);