优化 后台等级设置

This commit is contained in:
2026-04-26 20:37:23 +08:00
parent e69bceeb77
commit b07f4e971a
13 changed files with 753 additions and 14 deletions
+38 -1
View File
@@ -25,13 +25,24 @@
@php
$fieldValue = (string) $body;
$shouldUseTextarea = strlen($fieldValue) > 50 || str_contains($fieldValue, "\n") || str_contains($fieldValue, '<');
$isMaxLevelField = $alias === 'maxlevel';
$isSuperLevelField = $alias === 'superlevel';
@endphp
<div>
<label class="block text-sm font-bold text-gray-700 mb-2">
{{ $descriptions[$alias] ?? $alias }}
<span class="text-gray-400 font-normal ml-2">[{{ $alias }}]</span>
</label>
@if ($shouldUseTextarea)
@if ($isMaxLevelField)
<p class="mb-2 text-xs text-gray-500">修改后会自动同步管理员级别为“最高等级 + 1”。</p>
<input type="number" min="1" step="1" id="system-maxlevel" name="{{ $alias }}" value="{{ $fieldValue }}"
class="w-full border-gray-300 rounded-md shadow-sm focus:border-indigo-500 focus:ring-indigo-500 p-2.5 bg-gray-50 border">
@elseif ($isSuperLevelField)
<p class="mb-2 text-xs text-gray-500">该值会随“用户最高可达等级”自动计算,仅用于展示当前结果。</p>
<input type="number" id="system-superlevel" value="{{ $fieldValue }}"
class="w-full border-gray-200 rounded-md shadow-sm p-2.5 bg-gray-100 border text-gray-600"
readonly>
@elseif ($shouldUseTextarea)
<textarea name="{{ $alias }}" rows="4"
class="w-full border-gray-300 rounded-md shadow-sm focus:border-indigo-500 focus:ring-indigo-500 p-2.5 bg-gray-50 border whitespace-pre-wrap">{{ $fieldValue }}</textarea>
@else
@@ -53,4 +64,30 @@
</form>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
const maxLevelInput = document.querySelector('#system-maxlevel');
const superLevelInput = document.querySelector('#system-superlevel');
if (!maxLevelInput || !superLevelInput) {
return;
}
const syncSuperLevel = () => {
const maxLevel = Number.parseInt(maxLevelInput.value ?? '', 10);
if (Number.isNaN(maxLevel) || maxLevel < 1) {
superLevelInput.value = '';
return;
}
superLevelInput.value = String(maxLevel + 1);
};
maxLevelInput.addEventListener('input', syncSuperLevel);
syncSuperLevel();
});
</script>
@endsection