From bab584f31d109db5cf5a111f85ee030c29ba6b6a Mon Sep 17 00:00:00 2001 From: canglan Date: Sat, 22 Aug 2026 02:56:13 +0800 Subject: [PATCH] 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 --- public/js/pages/ticket-create.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/public/js/pages/ticket-create.js b/public/js/pages/ticket-create.js index d9c7d42..a65721c 100644 --- a/public/js/pages/ticket-create.js +++ b/public/js/pages/ticket-create.js @@ -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) => ``).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) => ``).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 = { ${user ? `` : ''} -
+