fix(admin): 修复多页面设置加载失败 — renderOtherSettings 空指针崩溃
Some checks failed
CI / Lint + Build (push) Has been cancelled

根因:site-settings.js 的 renderOtherSettings() 无条件访问
#general-settings 元素,但 brand/security/registration 三个模板
无此容器,导致 TypeError 被 catch 吞掉 → '加载设置失败'。

额外修复:
- footer.html: ExtraJS 添加 ?v= 缓存版本哈希
- site-settings.js: API 失败时显式展示服务端错误消息(不再静默 return)
- site_settings.go: Set() 改用 UPSERT(clause.OnConflict),
  修复 GORM Save() 对不存在 key 首次保存时返回 ErrRecordNotFound
This commit is contained in:
2026-06-30 18:56:42 +08:00
parent ecbae7c4fa
commit 20067f7640
3 changed files with 12 additions and 4 deletions

View File

@ -36,7 +36,10 @@
async function loadSettings() {
try {
var res = await api.get('/api/admin/site-settings');
if (!res.success) return;
if (!res.success) {
showToast(res.message || '加载设置失败', 'error');
return;
}
// 所有开关
var audit = res.data.audit || {};
@ -138,6 +141,7 @@
// --- 渲染其他设置过滤已有专属UI的key ---
function renderOtherSettings(all) {
var container = document.getElementById('general-settings');
if (!container) return; // 部分页面无此容器
var filtered = [];
Object.keys(all).forEach(function(k) {
if (!DEDICATED_KEYS[k]) filtered.push(k);