feat: 任命/撤销通知系统 + 用户名片UI优化
- 任命/撤销事件增加 type 字段区分类型 - 任命:全屏礼花 + 紫色弹窗 + 紫色系统消息 - 撤销:灰色弹窗 + 灰色系统消息,无礼花 - 消息分发:操作者/被操作者显示在私聊面板,其他人显示在公屏 - 系统消息加随机鼓励语(各5条轮换) - ChatStateService 修复 Redis key 前缀扫描问题(getAllActiveRoomIds) - 用户名片折叠优化:管理员视野、职务履历均可折叠 - 管理操作 + 职务操作合并为「🔧 管理操作」折叠区 - 悄悄话改为「🎁 送礼物」按钮,礼物面板内联展开
This commit is contained in:
@@ -4,10 +4,6 @@
|
||||
|
||||
@section('content')
|
||||
|
||||
@php
|
||||
// 管理员级别 = 最高等级 + 1,后台编辑最高可设到管理员级别
|
||||
$adminLevel = (int) \App\Models\Sysparam::getValue('maxlevel', '15') + 1;
|
||||
@endphp
|
||||
<div class="bg-white rounded-xl shadow-sm border border-gray-100 overflow-hidden mb-6" x-data="userEditor()">
|
||||
<div class="p-6 border-b border-gray-100 bg-gray-50 flex items-center justify-between">
|
||||
<form action="{{ route('admin.users.index') }}" method="GET" class="flex gap-2">
|
||||
@@ -54,6 +50,7 @@
|
||||
等级<span class="text-indigo-500">{{ $arrow('user_level') }}</span>
|
||||
</a>
|
||||
</th>
|
||||
<th class="p-4">职务</th>
|
||||
<th class="p-4">
|
||||
<a href="{{ $sortLink('exp_num') }}" class="hover:text-indigo-600 flex items-center gap-1">
|
||||
经验<span class="text-indigo-500">{{ $arrow('exp_num') }}</span>
|
||||
@@ -95,6 +92,17 @@
|
||||
LV.{{ $user->user_level }}
|
||||
</span>
|
||||
</td>
|
||||
<td class="p-4">
|
||||
@if ($user->activePosition)
|
||||
@php $pos = $user->activePosition->position; @endphp
|
||||
<div class="text-xs text-gray-400">{{ $pos->department->name }}</div>
|
||||
<div class="font-bold text-sm" style="color: {{ $pos->department->color }}">
|
||||
{{ $pos->icon }} {{ $pos->name }}
|
||||
</div>
|
||||
@else
|
||||
<span class="text-gray-300 text-xs">—</span>
|
||||
@endif
|
||||
</td>
|
||||
<td class="p-4 text-sm font-mono text-gray-600">
|
||||
{{ number_format($user->exp_num ?? 0) }}
|
||||
</td>
|
||||
@@ -111,7 +119,6 @@
|
||||
@click="editingUser = {
|
||||
id: {{ $user->id }},
|
||||
username: '{{ addslashes($user->username) }}',
|
||||
user_level: {{ $user->user_level }},
|
||||
exp_num: {{ $user->exp_num ?? 0 }},
|
||||
jjb: {{ $user->jjb ?? 0 }},
|
||||
meili: {{ $user->meili ?? 0 }},
|
||||
@@ -172,26 +179,6 @@
|
||||
@csrf @method('PUT')
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
{{-- 等级 --}}
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-gray-600 mb-1">
|
||||
等级
|
||||
<span class="text-gray-400 font-normal">
|
||||
(最高 <span x-text="adminLevel"></span> 级)
|
||||
</span>
|
||||
</label>
|
||||
<input type="number" name="user_level" x-model="editingUser.user_level" required
|
||||
min="0" :max="adminLevel"
|
||||
:readonly="{{ Auth::id() }} !== 1 && editingUser.id !== {{ Auth::id() }}"
|
||||
class="w-full border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 p-2 border text-sm"
|
||||
:class="{
|
||||
'bg-gray-100 cursor-not-allowed': {{ Auth::id() }} !== 1 && editingUser
|
||||
.id !==
|
||||
{{ Auth::id() }}
|
||||
}"
|
||||
:title="{{ Auth::id() }} !== 1 && editingUser.id !== {{ Auth::id() }} ?
|
||||
'仅系统创始人可修改他人等级' : ''">
|
||||
</div>
|
||||
{{-- 经验 --}}
|
||||
<div>
|
||||
<label class="block text-xs font-bold text-gray-600 mb-1">经验值</label>
|
||||
@@ -285,7 +272,6 @@
|
||||
Alpine.data('userEditor', () => ({
|
||||
showEditModal: false,
|
||||
editingUser: {},
|
||||
adminLevel: {{ $adminLevel }},
|
||||
editToast: false,
|
||||
editToastOk: true,
|
||||
editToastMsg: '',
|
||||
|
||||
Reference in New Issue
Block a user