|
|
@@ -115,60 +115,42 @@ class GameConditionItemController extends AdminController
|
|
|
->options(GameConditionGroup::pluck('name', 'id'))
|
|
|
->required();
|
|
|
|
|
|
+ // 使用when方法根据条件类型显示不同的target_id字段
|
|
|
$form->select('condition_type', '条件类型')
|
|
|
->options(CONDITION_TYPE::getAll())
|
|
|
- ->required();
|
|
|
-
|
|
|
- // 根据条件类型显示不同的target_id字段
|
|
|
- $conditionType = request()->input('condition_type') ?? ($form->model()->condition_type ?? null);
|
|
|
-
|
|
|
- if ($conditionType == CONDITION_TYPE::HOUSE_LEVEL->value) {
|
|
|
- // 房屋等级条件不需要target_id
|
|
|
- $form->hidden('target_id')->default(0);
|
|
|
- } else {
|
|
|
- // 其他条件类型需要选择target_id
|
|
|
- switch ($conditionType) {
|
|
|
- case CONDITION_TYPE::LAND_LEVEL->value:
|
|
|
- // 土地等级条件
|
|
|
- $form->select('target_id', '土地类型')
|
|
|
- ->options(FarmLandType::pluck('name', 'id'))
|
|
|
- ->required()
|
|
|
- ->help('选择要检查的土地类型');
|
|
|
- break;
|
|
|
-
|
|
|
- case CONDITION_TYPE::PET_LEVEL->value:
|
|
|
- // 宠物等级条件
|
|
|
- $form->select('target_id', '宠物')
|
|
|
- ->options(PetConfig::pluck('name', 'id'))
|
|
|
- ->required()
|
|
|
- ->help('选择要检查的宠物');
|
|
|
- break;
|
|
|
-
|
|
|
- case CONDITION_TYPE::ITEM_COUNT->value:
|
|
|
- // 物品持有数条件
|
|
|
- $form->select('target_id', '物品')
|
|
|
- ->options(Item::pluck('name', 'id'))
|
|
|
- ->required()
|
|
|
- ->help('选择要检查的物品');
|
|
|
- break;
|
|
|
-
|
|
|
- case CONDITION_TYPE::CURRENCY_COUNT->value:
|
|
|
- // 代币持有数条件
|
|
|
- $form->select('target_id', '代币')
|
|
|
- ->options(FundCurrencyModel::pluck('name', 'id'))
|
|
|
- ->required()
|
|
|
- ->help('选择要检查的代币');
|
|
|
- break;
|
|
|
-
|
|
|
- default:
|
|
|
- // 默认显示一个数字输入框
|
|
|
- $form->number('target_id', '目标ID')
|
|
|
- ->default(0)
|
|
|
- ->required()
|
|
|
- ->help('根据条件类型不同,表示土地类型ID、宠物ID、物品ID、代币ID等');
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ ->required()
|
|
|
+ ->when(CONDITION_TYPE::LAND_LEVEL->value, function (Form $form) {
|
|
|
+ // 土地等级条件
|
|
|
+ $form->select('target_id', '土地类型')
|
|
|
+ ->options(FarmLandType::pluck('name', 'id'))
|
|
|
+ ->required()
|
|
|
+ ->help('选择要检查的土地类型');
|
|
|
+ })
|
|
|
+ ->when(CONDITION_TYPE::HOUSE_LEVEL->value, function (Form $form) {
|
|
|
+ // 房屋等级条件
|
|
|
+ $form->hidden('target_id')->default(0);
|
|
|
+ })
|
|
|
+ ->when(CONDITION_TYPE::PET_LEVEL->value, function (Form $form) {
|
|
|
+ // 宠物等级条件
|
|
|
+ $form->select('target_id', '宠物')
|
|
|
+ ->options(PetConfig::pluck('name', 'id'))
|
|
|
+ ->required()
|
|
|
+ ->help('选择要检查的宠物');
|
|
|
+ })
|
|
|
+ ->when(CONDITION_TYPE::ITEM_COUNT->value, function (Form $form) {
|
|
|
+ // 物品持有数条件
|
|
|
+ $form->select('target_id', '物品')
|
|
|
+ ->options(Item::pluck('name', 'id'))
|
|
|
+ ->required()
|
|
|
+ ->help('选择要检查的物品');
|
|
|
+ })
|
|
|
+ ->when(CONDITION_TYPE::CURRENCY_COUNT->value, function (Form $form) {
|
|
|
+ // 代币持有数条件
|
|
|
+ $form->select('target_id', '代币')
|
|
|
+ ->options(FundCurrencyModel::pluck('name', 'id'))
|
|
|
+ ->required()
|
|
|
+ ->help('选择要检查的代币');
|
|
|
+ });
|
|
|
|
|
|
$form->select('operator', '比较运算符')
|
|
|
->options(CONDITION_OPERATOR::getAll())
|
|
|
@@ -195,21 +177,29 @@ class GameConditionItemController extends AdminController
|
|
|
$form->display('created_at', '创建时间');
|
|
|
$form->display('updated_at', '更新时间');
|
|
|
|
|
|
- // 添加JavaScript代码,处理条件类型变化时的字段显示/隐藏逻辑
|
|
|
- $form->script(<<<JS
|
|
|
+ // 添加JavaScript代码,处理房屋等级条件的target_id
|
|
|
+ $form->html(<<<HTML
|
|
|
+<script>
|
|
|
$(function() {
|
|
|
// 监听条件类型变化
|
|
|
$('select[name="condition_type"]').on('change', function() {
|
|
|
- // 获取当前选中的条件类型
|
|
|
- var type = $(this).val();
|
|
|
+ // 如果选择的是房屋等级条件,确保target_id为0
|
|
|
+ if ($(this).val() == '2') { // HOUSE_LEVEL
|
|
|
+ $('input[name="target_id"]').val(0);
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
- // 刷新页面,传递条件类型参数
|
|
|
- var url = new URL(window.location.href);
|
|
|
- url.searchParams.set('condition_type', type);
|
|
|
- window.location.href = url.toString();
|
|
|
+ // 表单提交前的处理
|
|
|
+ $('form').on('submit', function() {
|
|
|
+ // 如果选择的是房屋等级条件,确保target_id为0
|
|
|
+ if ($('select[name="condition_type"]').val() == '2') { // HOUSE_LEVEL
|
|
|
+ $('input[name="target_id"]').val(0);
|
|
|
+ }
|
|
|
+ return true;
|
|
|
});
|
|
|
});
|
|
|
-JS);
|
|
|
+</script>
|
|
|
+HTML);
|
|
|
});
|
|
|
}
|
|
|
}
|