grid->column($field, $label)->display(function ($value) { return BUFF_TYPE::getName($value); }); } /** * 添加灾害类型列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnDisasterType(string $field = 'disaster_type', string $label = '灾害类型'): Column { return $this->grid->column($field, $label)->display(function ($value) { return DISASTER_TYPE::getName($value); }); } /** * 添加生长阶段列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnGrowthStage(string $field = 'growth_stage', string $label = '生长阶段'): Column { return $this->grid->column($field, $label)->display(function ($value) { return GROWTH_STAGE::getName($value); })->label([ GROWTH_STAGE::SEED->value => 'default', GROWTH_STAGE::SPROUT->value => 'info', GROWTH_STAGE::GROWTH->value => 'primary', GROWTH_STAGE::MATURE->value => 'success', GROWTH_STAGE::WITHERED->value => 'danger', ]); } /** * 添加土地状态列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnLandStatus(string $field = 'status', string $label = '土地状态'): Column { return $this->grid->column($field, $label)->display(function ($value) { return LAND_STATUS::getName($value); })->label([ LAND_STATUS::IDLE->value => 'default', LAND_STATUS::PLANTING->value => 'primary', LAND_STATUS::DISASTER->value => 'warning', LAND_STATUS::HARVESTABLE->value => 'success', LAND_STATUS::WITHERED->value => 'danger', ]); } /** * 添加土地类型列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnLandType(string $field = 'land_type', string $label = '土地类型'): Column { return $this->grid->column($field, $label)->display(function ($value) { return LAND_TYPE::getName($value); })->label([ LAND_TYPE::NORMAL->value => 'default', LAND_TYPE::RED->value => 'danger', LAND_TYPE::BLACK->value => 'dark', LAND_TYPE::GOLD->value => 'warning', LAND_TYPE::BLUE->value => 'info', LAND_TYPE::PURPLE->value => 'primary', ]); } /** * 添加种子类型列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnSeedType(string $field = 'type', string $label = '种子类型'): Column { return $this->grid->column($field, $label)->display(function ($value) { return SEED_TYPE::getName($value); })->label([ SEED_TYPE::NORMAL->value => 'default', SEED_TYPE::MYSTERIOUS->value => 'primary', SEED_TYPE::GIANT->value => 'success', ]); } /** * 添加升级类型列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnUpgradeType(string $field = 'upgrade_type', string $label = '升级类型'): Column { return $this->grid->column($field, $label)->display(function ($value) { return UPGRADE_TYPE::getName($value); })->label([ UPGRADE_TYPE::LAND->value => 'primary', UPGRADE_TYPE::HOUSE->value => 'success', ]); } /** * 添加灾害情况列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnDisasters(string $field = 'disasters', string $label = '灾害情况'): Column { return $this->grid->column($field, $label)->display(function ($value) { if (empty($value)) { return '无灾害'; } $disasters = json_decode($value, true); if (empty($disasters)) { return '无灾害'; } $result = []; foreach ($disasters as $type => $time) { $disasterName = DISASTER_TYPE::getName((int)$type); $result[] = $disasterName; } return implode('
', $result); }); } /** * 添加是否施肥列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnFertilized(string $field = 'fertilized', string $label = '已施肥'): Column { return $this->grid->column($field, $label)->bool(); } /** * 添加产量加成列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnOutputBonus(string $field = 'output_bonus', string $label = '产量加成'): Column { return $this->grid->column($field, $label)->display(function ($value) { return ($value * 100) . '%'; }); } /** * 添加灾害抵抗列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnDisasterResistance(string $field = 'disaster_resistance', string $label = '灾害抵抗'): Column { return $this->grid->column($field, $label)->display(function ($value) { return ($value * 100) . '%'; }); } /** * 添加是否特殊土地列 * * @param string $field 字段名 * @param string $label 标签名 * @return Column */ public function columnIsSpecial(string $field = 'is_special', string $label = '特殊土地'): Column { return $this->grid->column($field, $label)->bool(); } /** * 添加种子列 * * @param string $field 字段名 * @param string $label 标签名 * @param bool $showType 是否显示种子类型 * @return Column */ public function columnSeed(string $field = 'seed_id', string $label = '种子', bool $showType = true): Column { return $this->grid->column($field, $label)->display(function ($value) use ($showType) { if (empty($value)) { return '-'; } // 尝试获取种子名称 $seed = \App\Module\Farm\Models\FarmSeed::find($value); if ($seed) { $html = "{$seed->name}"; if ($showType) { $typeName = \App\Module\Farm\Enums\SEED_TYPE::getName($seed->type); $html .= " {$typeName}"; } // 如果有关联的物品ID,尝试获取物品名称 if ($seed->item_id) { try { $item = \App\Module\GameItems\Models\Item::find($seed->item_id); if ($item) { $html .= "
物品: {$item->name} (ID: {$item->id})"; } } catch (\Exception $e) { // 忽略异常,只是不显示物品信息 } } return $html; } return $value; }); } /** * 添加物品列 * * @param string $field 字段名 * @param string $label 标签名 * @param bool $showType 是否显示物品类型 * @return Column */ public function columnItem(string $field = 'item_id', string $label = '物品', bool $showType = true): Column { return $this->grid->column($field, $label)->display(function ($value) use ($showType) { if (empty($value)) { return '-'; } // 尝试获取物品名称 try { $item = \App\Module\GameItems\Models\Item::find($value); if ($item) { $html = "{$item->name}"; if ($showType && isset($item->type)) { try { $typeName = \App\Module\GameItems\Enums\ITEM_TYPE::getName($item->type); $html .= " {$typeName}"; } catch (\Exception $e) { // 忽略异常,只是不显示类型信息 } } return $html; } } catch (\Exception $e) { // 忽略异常,只是不显示物品信息 } return $value; }); } }