diff --git a/templates/MetaLab-2026/html/settings/index.html b/templates/MetaLab-2026/html/settings/index.html
index bfdcdc6..c61193a 100644
--- a/templates/MetaLab-2026/html/settings/index.html
+++ b/templates/MetaLab-2026/html/settings/index.html
@@ -783,37 +783,37 @@
showSettingsToast('请输入密码确认', true);
return;
}
- if (!confirm('确定要注销账号吗?\n\n注销后 7 天内重新登录可撤销注销,期满后将永久删除。')) {
- return;
- }
- deleteAccountBtn.disabled = true;
- deleteAccountBtn.textContent = '注销中...';
+ showConfirm('注销账号', '确定要注销账号吗?\n\n注销后 7 天内重新登录可撤销注销,期满后将永久删除。').then(function(ok) {
+ if (!ok) return;
+ deleteAccountBtn.disabled = true;
+ deleteAccountBtn.textContent = '注销中...';
- var xhr = new XMLHttpRequest();
- xhr.open('POST', '/api/settings/delete-account', true);
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onreadystatechange = function () {
- if (xhr.readyState !== 4) return;
- deleteAccountBtn.disabled = false;
- deleteAccountBtn.textContent = '确认注销';
- try {
- var res = JSON.parse(xhr.responseText);
- if (res.success) {
- showSettingsToast(res.message || '账号已注销');
- setTimeout(function () {
- window.location.href = '/';
- }, 2000);
- } else {
- showSettingsToast(res.message || '操作失败', true);
+ var xhr = new XMLHttpRequest();
+ xhr.open('POST', '/api/settings/delete-account', true);
+ xhr.setRequestHeader('Content-Type', 'application/json');
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState !== 4) return;
+ deleteAccountBtn.disabled = false;
+ deleteAccountBtn.textContent = '确认注销';
+ try {
+ var res = JSON.parse(xhr.responseText);
+ if (res.success) {
+ showSettingsToast(res.message || '账号已注销');
+ setTimeout(function () {
+ window.location.href = '/';
+ }, 2000);
+ } else {
+ showSettingsToast(res.message || '操作失败', true);
+ }
+ } catch (e) {
+ showSettingsToast('操作失败', true);
}
- } catch (e) {
- showSettingsToast('操作失败', true);
- }
- };
- xhr.send(JSON.stringify({
- password: deletePwd.value,
- reason: deleteReason ? deleteReason.value : ''
- }));
+ };
+ xhr.send(JSON.stringify({
+ password: deletePwd.value,
+ reason: deleteReason ? deleteReason.value : ''
+ }));
+ });
});
}
@@ -829,36 +829,38 @@
btn.addEventListener('click', function () {
var sid = btn.getAttribute('data-sid');
if (!sid) return;
- if (!confirm('确定要踢出该设备吗?')) return;
- btn.disabled = true;
- btn.textContent = '踢出中...';
+ showConfirm('确认', '确定要踢出该设备吗?').then(function(ok) {
+ if (!ok) return;
+ btn.disabled = true;
+ btn.textContent = '踢出中...';
- var xhr = new XMLHttpRequest();
- xhr.open('DELETE', '/api/settings/sessions/' + encodeURIComponent(sid), true);
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onreadystatechange = function () {
- if (xhr.readyState !== 4) return;
- btn.disabled = false;
- btn.textContent = '踢出';
- try {
- var res = JSON.parse(xhr.responseText);
- if (res.success) {
- showSettingsToast(res.message || '已踢出该设备');
- var item = btn.closest('.session-item');
- if (item) {
- item.style.transition = 'opacity .3s ease, transform .3s ease';
- item.style.opacity = '0';
- item.style.transform = 'translateX(20px)';
- setTimeout(function () { item.remove(); }, 300);
+ var xhr = new XMLHttpRequest();
+ xhr.open('DELETE', '/api/settings/sessions/' + encodeURIComponent(sid), true);
+ xhr.setRequestHeader('Content-Type', 'application/json');
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState !== 4) return;
+ btn.disabled = false;
+ btn.textContent = '踢出';
+ try {
+ var res = JSON.parse(xhr.responseText);
+ if (res.success) {
+ showSettingsToast(res.message || '已踢出该设备');
+ var item = btn.closest('.session-item');
+ if (item) {
+ item.style.transition = 'opacity .3s ease, transform .3s ease';
+ item.style.opacity = '0';
+ item.style.transform = 'translateX(20px)';
+ setTimeout(function () { item.remove(); }, 300);
+ }
+ } else {
+ showSettingsToast(res.message || '操作失败', true);
}
- } else {
- showSettingsToast(res.message || '操作失败', true);
+ } catch (e) {
+ showSettingsToast('操作失败', true);
}
- } catch (e) {
- showSettingsToast('操作失败', true);
- }
- };
- xhr.send();
+ };
+ xhr.send();
+ });
});
});
@@ -870,38 +872,40 @@
showSettingsToast('没有其他在线设备');
return;
}
- if (!confirm('确定要踢出所有其他设备(共 ' + otherCount + ' 台)吗?')) return;
- kickOthersBtn.disabled = true;
- kickOthersBtn.textContent = '处理中...';
+ showConfirm('确认', '确定要踢出所有其他设备(共 ' + otherCount + ' 台)吗?').then(function(ok) {
+ if (!ok) return;
+ kickOthersBtn.disabled = true;
+ kickOthersBtn.textContent = '处理中...';
- var xhr = new XMLHttpRequest();
- xhr.open('POST', '/api/settings/sessions/destroy-others', true);
- xhr.setRequestHeader('Content-Type', 'application/json');
- xhr.onreadystatechange = function () {
- if (xhr.readyState !== 4) return;
- kickOthersBtn.disabled = false;
- kickOthersBtn.textContent = '一键踢出其他设备';
- try {
- var res = JSON.parse(xhr.responseText);
- if (res.success) {
- showSettingsToast(res.message || '已踢出所有其他设备');
- var others = document.querySelectorAll('.session-item:not(.session-current)');
- others.forEach(function (item, i) {
- setTimeout(function () {
- item.style.transition = 'opacity .3s ease, transform .3s ease';
- item.style.opacity = '0';
- item.style.transform = 'translateX(20px)';
- setTimeout(function () { item.remove(); }, 300);
- }, i * 100);
- });
- } else {
- showSettingsToast(res.message || '操作失败', true);
+ var xhr = new XMLHttpRequest();
+ xhr.open('POST', '/api/settings/sessions/destroy-others', true);
+ xhr.setRequestHeader('Content-Type', 'application/json');
+ xhr.onreadystatechange = function () {
+ if (xhr.readyState !== 4) return;
+ kickOthersBtn.disabled = false;
+ kickOthersBtn.textContent = '一键踢出其他设备';
+ try {
+ var res = JSON.parse(xhr.responseText);
+ if (res.success) {
+ showSettingsToast(res.message || '已踢出所有其他设备');
+ var others = document.querySelectorAll('.session-item:not(.session-current)');
+ others.forEach(function (item, i) {
+ setTimeout(function () {
+ item.style.transition = 'opacity .3s ease, transform .3s ease';
+ item.style.opacity = '0';
+ item.style.transform = 'translateX(20px)';
+ setTimeout(function () { item.remove(); }, 300);
+ }, i * 100);
+ });
+ } else {
+ showSettingsToast(res.message || '操作失败', true);
+ }
+ } catch (e) {
+ showSettingsToast('操作失败', true);
}
- } catch (e) {
- showSettingsToast('操作失败', true);
- }
- };
- xhr.send();
+ };
+ xhr.send();
+ });
});
}
@@ -1056,19 +1060,21 @@
listEl.querySelectorAll('.fav-folder-del').forEach(function (btn) {
btn.addEventListener('click', function () {
var id = btn.getAttribute('data-id');
- if (!confirm('确定要删除此收藏夹?其中的收藏内容也将被清除。')) return;
- api('DELETE', '/api/folders/' + id)
- .then(function (r) {
- if (r.success) {
- showSettingsToast('收藏夹已删除');
- loadFolders();
- } else {
- showSettingsToast(r.message || '删除失败', true);
- }
- })
- .catch(function () {
- showSettingsToast('删除失败', true);
- });
+ showConfirm('确认', '确定要删除此收藏夹?其中的收藏内容也将被清除。').then(function(ok) {
+ if (!ok) return;
+ api('DELETE', '/api/folders/' + id)
+ .then(function (r) {
+ if (r.success) {
+ showSettingsToast('收藏夹已删除');
+ loadFolders();
+ } else {
+ showSettingsToast(r.message || '删除失败', true);
+ }
+ })
+ .catch(function () {
+ showSettingsToast('删除失败', true);
+ });
+ });
});
});
})
@@ -1079,24 +1085,25 @@
if (createBtn) {
createBtn.addEventListener('click', function () {
- var name = prompt('请输入收藏夹名称(最多50个字符):');
- if (!name || !name.trim()) return;
- if (name.trim().length > 50) {
- showSettingsToast('收藏夹名称不能超过 50 个字符', true);
- return;
- }
- api('POST', '/api/folders', { name: name.trim(), description: '', is_public: false })
- .then(function (r) {
- if (r.success) {
- showSettingsToast('收藏夹已创建');
- loadFolders();
- } else {
- showSettingsToast(r.message || '创建失败', true);
- }
- })
- .catch(function () {
- showSettingsToast('创建失败', true);
- });
+ showPrompt('请输入收藏夹名称(最多50个字符):').then(function(name) {
+ if (!name || !name.trim()) return;
+ if (name.trim().length > 50) {
+ showSettingsToast('收藏夹名称不能超过 50 个字符', true);
+ return;
+ }
+ api('POST', '/api/folders', { name: name.trim(), description: '', is_public: false })
+ .then(function (r) {
+ if (r.success) {
+ showSettingsToast('收藏夹已创建');
+ loadFolders();
+ } else {
+ showSettingsToast(r.message || '创建失败', true);
+ }
+ })
+ .catch(function () {
+ showSettingsToast('创建失败', true);
+ });
+ });
});
}
diff --git a/templates/MetaLab-2026/html/studio/drafts.html b/templates/MetaLab-2026/html/studio/drafts.html
index df6d666..5768f27 100644
--- a/templates/MetaLab-2026/html/studio/drafts.html
+++ b/templates/MetaLab-2026/html/studio/drafts.html
@@ -59,42 +59,44 @@