文件还在测试中
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
/* 后台交互 */
|
||||
(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 确认,
|
||||
// 以配合严格 CSP(script-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();
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user