fix: 修复更名退款逻辑、审核列表显示及更名消耗确认提示
- 首次更名审核被拒不再退款,首次免费未扣费不产生退款 - 审核列表提交者列改用 UID,当前用户名列显示当前用户名 - 更名消耗提示改为确认弹窗,首次/非首次动态显示不同文案
This commit is contained in:
@ -79,7 +79,7 @@
|
||||
<div class="info-row">
|
||||
<span class="info-label">用户名</span>
|
||||
<span class="info-value">
|
||||
<input type="text" id="usernameInput" class="settings-text-input" value="{{.User.Username}}" maxlength="16" autocomplete="off">
|
||||
<input type="text" id="usernameInput" class="settings-text-input" value="{{.User.Username}}" maxlength="16" autocomplete="off" data-has-completed-rename="{{.HasCompletedRename}}">
|
||||
<span class="char-counter" id="usernameCounter"></span>
|
||||
</span>
|
||||
</div>
|
||||
@ -375,6 +375,7 @@
|
||||
// ---- 原始值(用于判断是否变更) ----
|
||||
var origUsername = usernameInput.value.trim();
|
||||
var origBio = bioInput.value;
|
||||
var hasCompletedRename = usernameInput.getAttribute('data-has-completed-rename') === 'true';
|
||||
|
||||
// 与后端一致的合法字符集:中文、英文大小写、数字、下划线、连字符
|
||||
var usernameRe = /^[\u4e00-\u9fffa-zA-Z0-9_-]+$/;
|
||||
@ -409,6 +410,21 @@
|
||||
return;
|
||||
}
|
||||
|
||||
// 用户名有变更时弹出消耗确认
|
||||
if (username !== origUsername) {
|
||||
var confirmMsg = hasCompletedRename
|
||||
? '确认修改用户名?\n\n本次将消耗 6 域能,是否继续?'
|
||||
: '确认修改用户名?\n\n首次更名无需消耗域能。';
|
||||
showConfirm('修改用户名', confirmMsg).then(function(ok) {
|
||||
if (ok) doSave(username, bio);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
doSave(username, bio);
|
||||
});
|
||||
|
||||
function doSave(username, bio) {
|
||||
btn.disabled = true;
|
||||
btn.textContent = '保存中...';
|
||||
|
||||
@ -434,7 +450,7 @@
|
||||
}
|
||||
};
|
||||
xhr.send(JSON.stringify({ username: username, bio: bio }));
|
||||
});
|
||||
}
|
||||
|
||||
// ---- 头像裁切上传 ----
|
||||
var avatarWrap = document.getElementById('avatarWrap');
|
||||
|
||||
@ -149,8 +149,8 @@ function renderTable(items, bodyId) {
|
||||
function renderUsernameRow(item) {
|
||||
return `
|
||||
<tr>
|
||||
<td>${escapeHtml(item.submitter_username || '—')}</td>
|
||||
<td>—</td>
|
||||
<td>${item.user_id || '—'}</td>
|
||||
<td>${escapeHtml(item.current_username || '—')}</td>
|
||||
<td><strong>${escapeHtml(item.new_value)}</strong></td>
|
||||
<td>${formatTime(item.created_at)}</td>
|
||||
<td class="col-actions">
|
||||
@ -165,7 +165,7 @@ function renderBioRow(item) {
|
||||
const display = text.length > 40 ? text.substring(0, 40) + '...' : text;
|
||||
return `
|
||||
<tr>
|
||||
<td>${escapeHtml(item.submitter_username || '—')}</td>
|
||||
<td>${item.user_id || '—'}</td>
|
||||
<td title="${escapeHtml(text)}">${escapeHtml(display)}</td>
|
||||
<td>${formatTime(item.created_at)}</td>
|
||||
<td class="col-actions">
|
||||
@ -188,7 +188,7 @@ function renderAvatarCards(items) {
|
||||
grid.innerHTML = items.map(item => `
|
||||
<div class="avatar-audit-card">
|
||||
<div class="card-header">
|
||||
<span>提交者: <strong>${escapeHtml(item.submitter_username || '—')}</strong></span>
|
||||
<span>提交者: <strong>${item.user_id || '—'}</strong></span>
|
||||
<span>${formatTime(item.created_at)}</span>
|
||||
</div>
|
||||
<div class="avatar-compare">
|
||||
@ -224,7 +224,7 @@ function renderHistoryTable(items) {
|
||||
return `
|
||||
<tr>
|
||||
<td>${typeLabel}</td>
|
||||
<td>${escapeHtml(item.submitter_username || '—')}</td>
|
||||
<td>${item.user_id || '—'}</td>
|
||||
<td>${escapeHtml(content)}</td>
|
||||
<td><span class="audit-status-tag ${statusClass}">${statusLabel}</span></td>
|
||||
<td>${escapeHtml(reviewer)}</td>
|
||||
|
||||
Reference in New Issue
Block a user