功能:职务列表内联编辑 + 全局奖励配置自动保存
职务列表三列内联编辑(失焦/回车自动保存,无需打开编辑弹窗):
- 人数上限:PATCH max_persons
- 单次上限:PATCH max_reward
- 单日上限:PATCH daily_reward_limit
保存成功显示短暂绿色 ✓,失败显示红色错误提示
全局奖励接收次数配置改为 AJAX 自动保存,失焦/回车触发,
无需保存按钮(原表单已移除)
新增接口:
- PATCH /admin/positions/{position}/patch(quickPatch)
- POST /admin/positions/reward-config(saveRewardConfig,兼容 JSON + 重定向)
This commit is contained in:
@@ -72,13 +72,35 @@ class PositionController extends Controller
|
||||
return redirect()->route('admin.positions.index')->with('success', "职务【{$data['name']}】创建成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 快速补丁:仅更新职务的数值限额字段(内联编辑专用)
|
||||
*
|
||||
* 允许修改的字段:max_persons / max_reward / daily_reward_limit。
|
||||
* 只接受 JSON AJAX 请求,只更新提交的字段,其余字段保持不变。
|
||||
*
|
||||
* @param Position $position 目标职务
|
||||
*/
|
||||
public function quickPatch(Request $request, Position $position): \Illuminate\Http\JsonResponse
|
||||
{
|
||||
$data = $request->validate([
|
||||
'max_persons' => 'sometimes|nullable|integer|min:1|max:9999',
|
||||
'max_reward' => 'sometimes|nullable|integer|min:0|max:999999',
|
||||
'daily_reward_limit' => 'sometimes|nullable|integer|min:0|max:999999',
|
||||
]);
|
||||
|
||||
// 用 fill+save 确保 null 值(不限)也能正确写入
|
||||
$position->fill($data)->save();
|
||||
|
||||
return response()->json(['status' => 'success']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存全局奖励金币接收次数上限
|
||||
*
|
||||
* 控制每位用户单日内可从所有职务持有者处累计接收奖励的最高次数。
|
||||
* 0 表示不限制,保存到 sysparam 表中(key: reward_recipient_daily_max)。
|
||||
*/
|
||||
public function saveRewardConfig(Request $request): RedirectResponse
|
||||
public function saveRewardConfig(Request $request): \Illuminate\Http\JsonResponse|RedirectResponse
|
||||
{
|
||||
$request->validate([
|
||||
'reward_recipient_daily_max' => 'required|integer|min:0|max:9999',
|
||||
@@ -98,6 +120,11 @@ class PositionController extends Controller
|
||||
|
||||
$label = $value === '0' ? '不限' : "{$value} 次";
|
||||
|
||||
// AJAX 请求返回 JSON,普通表单提交返回重定向
|
||||
if ($request->expectsJson()) {
|
||||
return response()->json(['status' => 'success', 'message' => "全局接收次数上限已更新为:{$label}"]);
|
||||
}
|
||||
|
||||
return redirect()->route('admin.positions.index')
|
||||
->with('success', "全局接收次数上限已更新为:{$label}");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user