目前还差物联网分配问题
This commit is contained in:
155
pc-cattle-transportation/AUTO_FILL_IMPLEMENTATION.md
Normal file
155
pc-cattle-transportation/AUTO_FILL_IMPLEMENTATION.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# 装车信息表单自动填充功能实现
|
||||
|
||||
## 功能概述
|
||||
|
||||
已成功实现装车信息表单的自动填充功能,可以根据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` 中集成了自动填充功能
|
||||
Reference in New Issue
Block a user