Add VIP presence themes and custom greetings

This commit is contained in:
2026-04-11 15:44:30 +08:00
parent 9fb7710079
commit 4eba9dfc12
21 changed files with 1126 additions and 49 deletions
+73
View File
@@ -27,6 +27,11 @@
duration_days: 30,
join_templates: '',
leave_templates: '',
join_effect: 'none',
leave_effect: 'none',
join_banner_style: 'aurora',
leave_banner_style: 'farewell',
allow_custom_messages: true,
},
openCreate() {
@@ -42,6 +47,11 @@
duration_days: 30,
join_templates: '',
leave_templates: '',
join_effect: 'none',
leave_effect: 'none',
join_banner_style: 'aurora',
leave_banner_style: 'farewell',
allow_custom_messages: true,
};
this.showForm = true;
},
@@ -59,6 +69,11 @@
duration_days: level.duration_days,
join_templates: level.join_templates_text,
leave_templates: level.leave_templates_text,
join_effect: level.join_effect,
leave_effect: level.leave_effect,
join_banner_style: level.join_banner_style,
leave_banner_style: level.leave_banner_style,
allow_custom_messages: level.allow_custom_messages,
};
this.showForm = true;
}
@@ -112,6 +127,18 @@
<span class="text-gray-500">当前会员</span>
<span class="font-bold text-indigo-600">{{ $level->users()->count() }} </span>
</div>
<div class="flex justify-between">
<span class="text-gray-500">进场特效</span>
<span class="font-bold text-sky-600">{{ $effectOptions[$level->joinEffectKey()] ?? '无特效' }}</span>
</div>
<div class="flex justify-between">
<span class="text-gray-500">离场特效</span>
<span class="font-bold text-violet-600">{{ $effectOptions[$level->leaveEffectKey()] ?? '无特效' }}</span>
</div>
<div class="flex justify-between">
<span class="text-gray-500">允许自定义</span>
<span class="font-bold {{ $level->allow_custom_messages ? 'text-emerald-600' : 'text-gray-400' }}">{{ $level->allow_custom_messages ? '允许' : '关闭' }}</span>
</div>
</div>
</div>
@@ -127,6 +154,11 @@
sort_order: {{ $level->sort_order }},
price: {{ $level->price }},
duration_days: {{ $level->duration_days }},
join_effect: '{{ $level->joinEffectKey() }}',
leave_effect: '{{ $level->leaveEffectKey() }}',
join_banner_style: '{{ $level->joinBannerStyleKey() }}',
leave_banner_style: '{{ $level->leaveBannerStyleKey() }}',
allow_custom_messages: {{ $level->allow_custom_messages ? 'true' : 'false' }},
join_templates_text: `{{ str_replace('`', '', implode("\n", $level->join_templates_array)) }}`,
leave_templates_text: `{{ str_replace('`', '', implode("\n", $level->leave_templates_array)) }}`,
requestUrl: '{{ route('admin.vip.update', $level->id) }}'
@@ -229,6 +261,47 @@
class="w-full border rounded-md p-2 text-sm"></textarea>
</div>
<div class="mt-4 grid grid-cols-2 gap-4">
<div>
<label class="block text-xs font-bold text-gray-600 mb-1">入场特效</label>
<select name="join_effect" x-model="form.join_effect" class="w-full border rounded-md p-2 text-sm">
@foreach ($effectOptions as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>
</div>
<div>
<label class="block text-xs font-bold text-gray-600 mb-1">离场特效</label>
<select name="leave_effect" x-model="form.leave_effect" class="w-full border rounded-md p-2 text-sm">
@foreach ($effectOptions as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>
</div>
<div>
<label class="block text-xs font-bold text-gray-600 mb-1">入场横幅风格</label>
<select name="join_banner_style" x-model="form.join_banner_style" class="w-full border rounded-md p-2 text-sm">
@foreach ($bannerStyleOptions as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>
</div>
<div>
<label class="block text-xs font-bold text-gray-600 mb-1">离场横幅风格</label>
<select name="leave_banner_style" x-model="form.leave_banner_style" class="w-full border rounded-md p-2 text-sm">
@foreach ($bannerStyleOptions as $value => $label)
<option value="{{ $value }}">{{ $label }}</option>
@endforeach
</select>
</div>
</div>
<label class="mt-4 flex items-center gap-3 rounded-xl border border-amber-100 bg-amber-50 px-4 py-3 text-sm text-amber-900">
<input type="checkbox" name="allow_custom_messages" value="1" x-model="form.allow_custom_messages"
class="rounded border-amber-300 text-amber-600 focus:ring-amber-400">
允许该会员等级用户在会员中心自定义欢迎语和离开语
</label>
<div class="flex justify-end space-x-3 pt-4 mt-4 border-t">
<button type="button" @click="showForm = false"
class="px-4 py-2 border rounded font-medium text-gray-600 hover:bg-gray-50">取消</button>