Files
2026-08-08 15:53:53 +08:00

66 lines
2.6 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 后台交互 */
(function () {
var mt = document.querySelector('.menu-toggle');
if (mt) mt.addEventListener('click', function () {
var s = document.querySelector('.admin-side'); if (s) s.classList.toggle('open');
});
// 分系统(CRM/PSI)侧栏抽屉
var mt2 = document.querySelector('.subsys .menu-toggle');
if (mt2) mt2.addEventListener('click', function () {
document.body.classList.toggle('nav-open');
});
function val(k) { var el = document.getElementById('f_' + k); return el ? el.value : ''; }
function updatePreview() {
var pb = document.getElementById('themePreview'); if (!pb) return;
pb.style.background = 'linear-gradient(135deg,' + val('primary') + ',' + val('secondary') + ')';
pb.style.color = '#fff';
pb.querySelector('.pv-title').textContent = '降温服 · 风格预览';
pb.querySelector('.pv-sub').textContent = '主色 ' + val('primary') + ' / 辅色 ' + val('secondary');
}
var presetSel = document.getElementById('preset');
var presets = window.__presets__ || null;
if (presetSel && presets) {
presetSel.addEventListener('change', function () {
var p = presets[this.value]; if (!p) return;
['primary', 'primary_600', 'secondary', 'accent', 'bg', 'surface', 'text', 'muted', 'border', 'nav_bg']
.forEach(function (k) {
var el = document.getElementById('f_' + k);
if (el && p.vars[k] != null) el.value = p.vars[k];
});
updatePreview();
});
}
['primary', 'secondary', 'accent', 'bg', 'surface', 'text', 'muted', 'border', 'nav_bg']
.forEach(function (k) {
var el = document.getElementById('f_' + k);
if (el) el.addEventListener('input', updatePreview);
});
updatePreview();
// 确认删除
document.querySelectorAll('form.del-form').forEach(function (f) {
f.addEventListener('submit', function (e) {
if (!confirm('确定要删除吗?此操作不可恢复。')) e.preventDefault();
});
});
})();
// 通用删除/操作确认:用 data-confirm 属性替代内联 onclick/onsubmit 确认,
// 以配合严格 CSPscript-src 已移除 'unsafe-inline')。
document.addEventListener('submit', function (e) {
var el = e.target;
if (el && el.hasAttribute('data-confirm') && !window.confirm(el.getAttribute('data-confirm'))) {
e.preventDefault();
}
});
document.addEventListener('click', function (e) {
var el = e.target && e.target.closest ? e.target.closest('[data-confirm]') : null;
if (el && !window.confirm(el.getAttribute('data-confirm'))) {
e.preventDefault();
e.stopPropagation();
}
});