feat: ticket create - identity-only for logged-in users
- logged-in users: identity dropdown shown when >=1 identity exists, game name input hidden (identity carries the submitter); required removed from hidden field - no identity: fall back to showing the game name input - anonymous: unchanged, only the input field - submit: identity selection still overrides reporter name/uid
This commit is contained in:
@@ -34,9 +34,22 @@ const TicketCreate = {
|
||||
API.get('/auth/identities').then(list => {
|
||||
this.identities = list || [];
|
||||
const sel = container.querySelector('#identity-select');
|
||||
if (sel && this.identities.length > 1) {
|
||||
sel.innerHTML = this.identities.map((it, i) => `<option value="${i}">${U.esc(it.source)} — ${U.esc(it.game_name)}</option>`).join('');
|
||||
sel.closest('.form-group').classList.remove('hidden');
|
||||
const nameGroup = container.querySelector('#reporter-name-group');
|
||||
if (sel) {
|
||||
if (this.identities.length > 0) {
|
||||
// 有身份: 显示身份选择, 隐藏游戏名输入框(身份即代表提交者)
|
||||
sel.innerHTML = this.identities.map((it, i) => `<option value="${i}">${U.esc(it.source)} — ${U.esc(it.game_name)}</option>`).join('');
|
||||
sel.closest('.form-group').classList.remove('hidden');
|
||||
if (nameGroup) {
|
||||
nameGroup.classList.add('hidden');
|
||||
const inp = nameGroup.querySelector('input[name="reporter_game_name"]');
|
||||
if (inp) inp.required = false; // 隐藏字段不再参与原生必填校验
|
||||
}
|
||||
} else {
|
||||
// 无身份: 保留游戏名输入框兜底
|
||||
sel.closest('.form-group').classList.add('hidden');
|
||||
if (nameGroup) nameGroup.classList.remove('hidden');
|
||||
}
|
||||
}
|
||||
}).catch(() => {});
|
||||
}
|
||||
@@ -82,11 +95,11 @@ const TicketCreate = {
|
||||
</div>
|
||||
|
||||
${user ? `<div class="form-group hidden" id="identity-group">
|
||||
<label>使用身份</label>
|
||||
<label>使用身份 *</label>
|
||||
<select id="identity-select"></select>
|
||||
</div>` : ''}
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-group" id="reporter-name-group">
|
||||
<label>您的游戏名称 *</label>
|
||||
<input name="reporter_game_name" required placeholder="Minecraft ID" value="${U.esc(prefill?.game_name || user?.game_name || '')}" ${prefill?.game_name ? 'readonly' : ''}>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user