|
|
@@ -0,0 +1,101 @@
|
|
|
+# 土地升级配置管理列表显示土地名字
|
|
|
+
|
|
|
+**任务时间**: 2025年06月20日 14:02
|
|
|
+**任务状态**: ✅ 已完成
|
|
|
+**提交哈希**: 8647d5a8
|
|
|
+
|
|
|
+## 任务描述
|
|
|
+
|
|
|
+优化土地升级配置管理后台页面,在列表和详情页面显示土地名字而不是ID,提升用户体验。
|
|
|
+
|
|
|
+## 实现内容
|
|
|
+
|
|
|
+### 1. 修改控制器显示逻辑
|
|
|
+
|
|
|
+**文件**: `app/Module/Farm/AdminControllers/FarmLandUpgradeConfigController.php`
|
|
|
+
|
|
|
+#### 列表页面优化
|
|
|
+- 修改`from_type_id`和`to_type_id`列显示,使用关联的土地类型名字
|
|
|
+- 使用预加载的关系`$this->fromType`和`$this->toType`获取土地名字
|
|
|
+- 对于不存在的土地类型,显示"未知类型 (ID: X)"
|
|
|
+
|
|
|
+#### 详情页面优化
|
|
|
+- 修改详情页面字段显示,显示土地名字和ID
|
|
|
+- 修复`materials`和`conditions`字段显示问题
|
|
|
+- 移除了错误的`fieldModelCatsJson`调用,改为正确的字段显示
|
|
|
+
|
|
|
+### 2. 优化Repository性能
|
|
|
+
|
|
|
+**文件**: `app/Module/Farm/Repositories/FarmLandUpgradeConfigRepository.php`
|
|
|
+
|
|
|
+- 在构造函数中预加载土地类型关系`['fromType', 'toType']`
|
|
|
+- 提高列表和详情页面的查询性能,避免N+1查询问题
|
|
|
+
|
|
|
+### 3. 数据清理
|
|
|
+
|
|
|
+- 清理了无效的土地升级配置数据
|
|
|
+- 删除了引用不存在土地类型ID(5-15)的配置记录
|
|
|
+- 保留了有效的升级路径:普通土地→红土地→黑土地→金土地
|
|
|
+
|
|
|
+## 技术要点
|
|
|
+
|
|
|
+### 关系预加载
|
|
|
+```php
|
|
|
+public function __construct()
|
|
|
+{
|
|
|
+ parent::__construct(['fromType', 'toType']);
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 列表显示优化
|
|
|
+```php
|
|
|
+$grid->column('from_type_id', '起始土地类型')->display(function ($fromTypeId) {
|
|
|
+ return $this->fromType ? $this->fromType->name : "未知类型 (ID: {$fromTypeId})";
|
|
|
+})->sortable();
|
|
|
+```
|
|
|
+
|
|
|
+### 详情页面显示
|
|
|
+```php
|
|
|
+$show->field('from_type_id', '起始土地类型')->as(function ($fromTypeId) {
|
|
|
+ return $this->fromType ? "{$this->fromType->name} (ID: {$fromTypeId})" : "未知类型 (ID: {$fromTypeId})";
|
|
|
+});
|
|
|
+```
|
|
|
+
|
|
|
+## 测试验证
|
|
|
+
|
|
|
+### 列表页面测试
|
|
|
+- ✅ 访问 `http://kku_laravel.local.gd/admin/farm-land-upgrade-configs`
|
|
|
+- ✅ 确认显示土地名字:普通土地、红土地、黑土地、金土地
|
|
|
+- ✅ 确认排序功能正常
|
|
|
+- ✅ 确认筛选功能正常
|
|
|
+
|
|
|
+### 详情页面测试
|
|
|
+- ✅ 访问详情页面 `/admin/farm-land-upgrade-configs/1`
|
|
|
+- ✅ 确认显示"普通土地 (ID: 1) → 红土地 (ID: 2)"
|
|
|
+- ✅ 确认消耗组和条件组字段正常显示
|
|
|
+
|
|
|
+## 问题解决
|
|
|
+
|
|
|
+### 1. 详情页面错误
|
|
|
+**问题**: 访问详情页面时出现"materials is not a model casts"错误
|
|
|
+**原因**: 使用了`fieldModelCatsJson`方法处理非JSON字段
|
|
|
+**解决**: 改为使用正确的字段显示方法,处理消耗组和条件组ID
|
|
|
+
|
|
|
+### 2. 关系预加载问题
|
|
|
+**问题**: Repository构造函数中错误使用`$this->with()`方法
|
|
|
+**原因**: EloquentRepository的构造函数参数应该是关系数组
|
|
|
+**解决**: 修改为`parent::__construct(['fromType', 'toType'])`
|
|
|
+
|
|
|
+## 最终效果
|
|
|
+
|
|
|
+- 📋 **列表页面**: 清晰显示土地升级路径,如"普通土地 → 红土地"
|
|
|
+- 📄 **详情页面**: 显示完整信息,如"普通土地 (ID: 1)"
|
|
|
+- ⚡ **性能优化**: 通过预加载关系避免N+1查询
|
|
|
+- 🧹 **数据清理**: 移除无效配置,保持数据一致性
|
|
|
+
|
|
|
+## 相关文件
|
|
|
+
|
|
|
+- `app/Module/Farm/AdminControllers/FarmLandUpgradeConfigController.php`
|
|
|
+- `app/Module/Farm/Repositories/FarmLandUpgradeConfigRepository.php`
|
|
|
+- `app/Module/Farm/Models/FarmLandUpgradeConfig.php`
|
|
|
+- `app/Module/Farm/Models/FarmLandType.php`
|