# 装车信息表单自动填充功能实现 ## 功能概述 已成功实现装车信息表单的自动填充功能,可以根据API返回的数据自动映射并填充表单字段。 ## 实现的功能 ### 1. 数据映射字段 根据提供的API响应数据,实现了以下字段的自动映射: #### 基础信息 - `deliveryId` ← `id` - `estimatedDeliveryTime` ← `estimatedDeliveryTime` - `serverDeviceSn` ← `serverDeviceId` #### 重量信息 - `emptyWeight` ← `emptyWeight` - `entruckWeight` ← `entruckWeight` - `landingEntruckWeight` ← `landingEntruckWeight` #### 照片URL - `quarantineTickeyUrl` ← `quarantineTickeyUrl` - `poundListImg` ← `poundListImg` - `emptyVehicleFrontPhoto` ← `emptyVehicleFrontPhoto` - `loadedVehicleFrontPhoto` ← `loadedVehicleFrontPhoto` - `loadedVehicleWeightPhoto` ← `loadedVehicleWeightPhoto` - `driverIdCardPhoto` ← `driverIdCardPhoto` #### 视频URL - `entruckWeightVideo` ← `entruckWeightVideo` - `emptyWeightVideo` ← `emptyWeightVideo` - `entruckVideo` ← `entruckVideo` - `controlSlotVideo` ← `controlSlotVideo` - `cattleLoadingCircleVideo` ← `cattleLoadingCircleVideo` ### 2. 核心实现 #### 自动填充函数 ```javascript const autoFillFormData = (apiData) => { if (!apiData) return; // 基础信息映射 ruleForm.deliveryId = apiData.id || ''; ruleForm.estimatedDeliveryTime = apiData.estimatedDeliveryTime || ''; ruleForm.serverDeviceSn = apiData.serverDeviceId || ''; // 重量信息映射 ruleForm.emptyWeight = apiData.emptyWeight || ''; ruleForm.entruckWeight = apiData.entruckWeight || ''; ruleForm.landingEntruckWeight = apiData.landingEntruckWeight || ''; // 照片URL映射 ruleForm.quarantineTickeyUrl = apiData.quarantineTickeyUrl || ''; ruleForm.poundListImg = apiData.poundListImg || ''; ruleForm.emptyVehicleFrontPhoto = apiData.emptyVehicleFrontPhoto || ''; ruleForm.loadedVehicleFrontPhoto = apiData.loadedVehicleFrontPhoto || ''; ruleForm.loadedVehicleWeightPhoto = apiData.loadedVehicleWeightPhoto || ''; ruleForm.driverIdCardPhoto = apiData.driverIdCardPhoto || ''; // 视频URL映射 ruleForm.entruckWeightVideo = apiData.entruckWeightVideo || ''; ruleForm.emptyWeightVideo = apiData.emptyWeightVideo || ''; ruleForm.entruckVideo = apiData.entruckVideo || ''; ruleForm.controlSlotVideo = apiData.controlSlotVideo || ''; ruleForm.cattleLoadingCircleVideo = apiData.cattleLoadingCircleVideo || ''; console.log('表单数据已自动填充:', ruleForm); }; ``` #### 更新后的对话框调用函数 ```javascript const onShowDialog = (row, apiData = null) => { data.dialogVisible = true; if (formDataRef.value) { formDataRef.value.resetFields(); } if (row) { nextTick(() => { data.deliveryId = row.id; ruleForm.deliveryId = row.id; // 如果提供了API数据,直接填充表单 if (apiData) { autoFillFormData(apiData); } else { // 否则从服务器获取详情 getOrderDetail(); } getHostList(); }); } }; ``` ## 使用方法 ### 方法1:直接传递API数据 ```javascript // 在调用装车对话框时,直接传递API响应数据 const loadClick = (row, apiData) => { if (LoadDialogRef.value) { LoadDialogRef.value.onShowDialog(row, apiData); } }; ``` ### 方法2:在API响应中自动填充 当调用 `getOrderDetail()` 函数时,会自动调用 `autoFillFormData(res.data)` 来填充表单。 ## 示例数据映射 基于提供的API响应数据: ```javascript { id: 85, deliveryNumber: "ZC20251020105111", deliveryTitle: "1", estimatedDeliveryTime: "2025-10-31 00:00:00", emptyWeight: "1000.00", entruckWeight: "2000.00", quarantineTickeyUrl: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/4c4e20251021100838.jpg", poundListImg: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/cows20251021100841.jpg", emptyVehicleFrontPhoto: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/4c4e20251021100847.jpg", loadedVehicleFrontPhoto: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/cows20251021100849.jpg", loadedVehicleWeightPhoto: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/4c4e20251021100854.jpg", driverIdCardPhoto: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/cows20251021100857.jpg", entruckWeightVideo: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/normal_video20251021100901.mp4", emptyWeightVideo: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/normal_video20251021100904.mp4", entruckVideo: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/normal_video20251021101046.mp4", controlSlotVideo: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/normal_video20251021101049.mp4", cattleLoadingCircleVideo: "https://smart-1251449951.cos.ap-guangzhou.myqcloud.com/iotPlateform/2025/10/21/normal_video20251021101052.mp4" } ``` 这些数据会自动映射到表单的相应字段中。 ## 注意事项 1. **数据安全**:所有字段都使用了 `|| ''` 来确保空值安全 2. **向后兼容**:保持了原有的 `getOrderDetail()` 功能 3. **调试支持**:添加了 `console.log` 来帮助调试数据填充过程 4. **响应式更新**:使用 Vue 3 的 reactive 系统确保数据变化时UI自动更新 ## 文件修改 - `pc-cattle-transportation/src/views/shipping/loadDialog.vue` - 添加了 `landingEntruckWeight` 字段 - 实现了 `autoFillFormData` 函数 - 更新了 `onShowDialog` 函数支持API数据参数 - 在 `getOrderDetail` 中集成了自动填充功能