2 Commits

Author SHA1 Message Date
mac
46862e5110 v1.2.4 — 责善改过简洁分割线风格
- 去掉序号标题和错误/改进方案标签文字
- 两条输入框纵向排列,项目间仅用分割线分隔
- 删除按钮绝对定位右上角,编辑模式下显示
2026-06-04 11:34:57 +08:00
mac
7b4134a72c v1.2.3 — 修复象限分类刷新丢失
- normalizeQuadrant(): priority→quadrant 回退映射
- 拖拽跨象限 API 调用增加错误提示
- loadWishes 加载时自动规范化 quadrant 字段
2026-06-03 14:55:54 +08:00
2 changed files with 34 additions and 59 deletions

View File

@@ -237,9 +237,9 @@
var eveningItems = []; var eveningItems = [];
var eRows = document.querySelectorAll('#evening-list .evening-row'); var eRows = document.querySelectorAll('#evening-list .evening-row');
for (var j=0; j<eRows.length; j++) { for (var j=0; j<eRows.length; j++) {
var cols = eRows[j].querySelectorAll('.col input'); var inputs = eRows[j].querySelectorAll('input[type="text"]');
var mistake = cols[0] ? cols[0].value.trim() : ''; var mistake = inputs[0] ? inputs[0].value.trim() : '';
var improve = cols[1] ? cols[1].value.trim() : ''; var improve = inputs[1] ? inputs[1].value.trim() : '';
if (mistake || improve) eveningItems.push({ mistake: mistake, improvement: improve }); if (mistake || improve) eveningItems.push({ mistake: mistake, improvement: improve });
} }
@@ -319,30 +319,15 @@
function addEveningRow(mistake, improve) { function addEveningRow(mistake, improve) {
var container = document.getElementById('evening-list'); var container = document.getElementById('evening-list');
var idx = container.children.length;
mistake = mistake || ''; mistake = mistake || '';
improve = improve || ''; improve = improve || '';
var div = document.createElement('div'); var div = document.createElement('div');
div.className = 'evening-row'; div.className = 'evening-row';
div.innerHTML = div.innerHTML =
'<div class="evening-header">' + '<button class="btn-del" onclick="this.parentElement.remove()"><svg class="icon-sm"><use href="#icon-x"/></svg></button>' +
'<span class="idx">' + (idx+1) + '.</span>' + '<input type="text" value="' + esc(mistake) + '" placeholder="犯的错误…">' +
'<button class="btn-del" onclick="this.parentElement.parentElement.remove();renumberEvening()"><svg class="icon-sm"><use href="#icon-x"/></svg></button>' + '<input type="text" value="' + esc(improve) + '" placeholder="改进方案…">';
'</div>' +
'<div class="mistake-row">' +
'<div class="col"><label>错误</label><input type="text" value="' + esc(mistake) + '" placeholder="今天犯的错…"></div>' +
'<div class="col"><label>改进方案</label><input type="text" value="' + esc(improve) + '" placeholder="下次怎么做…"></div>' +
'</div>';
container.appendChild(div); container.appendChild(div);
renumberEvening();
}
function renumberEvening() {
var rows = document.querySelectorAll('#evening-list .evening-row');
for (var i=0; i<rows.length; i++) {
var span = rows[i].querySelector('.idx');
if (span) span.textContent = (i+1) + '.';
}
} }
/* ── 勤学预设项目 ── */ /* ── 勤学预设项目 ── */
@@ -644,10 +629,19 @@
var wishesLoaded = false; var wishesLoaded = false;
var QUADRANTS = ['重要紧急', '重要不紧急', '紧急不重要', '不紧急不重要']; var QUADRANTS = ['重要紧急', '重要不紧急', '紧急不重要', '不紧急不重要'];
function normalizeQuadrant(w) {
if (QUADRANTS.indexOf(w.quadrant) >= 0) return w.quadrant;
// 老数据回退: priority → quadrant
var map = {'高': '重要紧急', '中': '重要不紧急', '低': '不紧急不重要'};
return map[w.priority] || '重要不紧急';
}
function loadWishes() { function loadWishes() {
if (wishesLoaded) { renderWishes(); return; } if (wishesLoaded) { renderWishes(); return; }
if (window.__INITIAL_WISHES__) { if (window.__INITIAL_WISHES__) {
wishes = window.__INITIAL_WISHES__; wishes = window.__INITIAL_WISHES__;
// 规范化 quadrant
wishes.forEach(function(w){ w.quadrant = normalizeQuadrant(w); });
wishesLoaded = true; wishesLoaded = true;
renderWishes(); renderWishes();
return; return;
@@ -670,7 +664,7 @@
QUADRANTS.forEach(function(quadrant) { QUADRANTS.forEach(function(quadrant) {
var list = document.getElementById('quad-list-' + quadrant); var list = document.getElementById('quad-list-' + quadrant);
if (!list) return; if (!list) return;
var items = wishes.filter(function(w){ return (w.quadrant || w.priority || '重要不紧急') === quadrant; }); var items = wishes.filter(function(w){ return normalizeQuadrant(w) === quadrant; });
var html = ''; var html = '';
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
var w = items[i]; var w = items[i];
@@ -711,7 +705,7 @@
el.classList.add('editing'); el.classList.add('editing');
var deadline = w.deadline || ''; var deadline = w.deadline || '';
var quadOpts = QUADRANTS.map(function(q){ var quadOpts = QUADRANTS.map(function(q){
return '<option value="' + q + '"' + (q === (w.quadrant || w.priority || '重要不紧急') ? ' selected' : '') + '>' + q + '</option>'; return '<option value="' + q + '"' + (q === normalizeQuadrant(w) ? ' selected' : '') + '>' + q + '</option>';
}).join(''); }).join('');
el.innerHTML = el.innerHTML =
'<div class="wish-edit-form">' + '<div class="wish-edit-form">' +
@@ -794,7 +788,7 @@
method: 'PUT', method: 'PUT',
headers: {'Content-Type': 'application/json'}, headers: {'Content-Type': 'application/json'},
body: JSON.stringify({quadrant: targetQuadrant}) body: JSON.stringify({quadrant: targetQuadrant})
}); }).catch(function(){ showToast('保存失败', 'error'); });
} }
renderWishes(); renderWishes();
saveWishOrder(); saveWishOrder();
@@ -822,7 +816,7 @@
method: 'PUT', method: 'PUT',
headers: {'Content-Type': 'application/json'}, headers: {'Content-Type': 'application/json'},
body: JSON.stringify({quadrant: q}) body: JSON.stringify({quadrant: q})
}); }).catch(function(){ showToast('保存失败', 'error'); });
renderWishes(); renderWishes();
} }
}); });

View File

@@ -615,9 +615,13 @@ body {
.btn-del:hover { background: var(--danger-light); } .btn-del:hover { background: var(--danger-light); }
.btn-del .icon-sm { width: 16px; height: 16px; } .btn-del .icon-sm { width: 16px; height: 16px; }
/* 责善改过 横排双输入 */ /* 责善改过 — 简洁分割线风格 */
.evening-row { .evening-row {
position: relative;
display: flex;
flex-direction: column;
gap: 8px;
padding: 0 0 12px; padding: 0 0 12px;
margin-bottom: 12px; margin-bottom: 12px;
border-bottom: 1px solid var(--border); border-bottom: 1px solid var(--border);
@@ -626,42 +630,17 @@ body {
.evening-row:last-child { .evening-row:last-child {
border-bottom: none; border-bottom: none;
margin-bottom: 0; margin-bottom: 0;
padding-bottom: 0;
} }
.evening-header { .evening-row .btn-del {
display: flex; position: absolute;
align-items: center; top: 0;
justify-content: space-between; right: 0;
margin-bottom: 8px; z-index: 1;
} }
.evening-header .idx { .evening-row input[type="text"] {
font-size: 12px;
color: var(--text-muted);
font-weight: 600;
}
.mistake-row {
display: flex;
flex-direction: column;
gap: 8px;
align-items: stretch;
}
.mistake-row .col {
display: flex;
flex-direction: column;
gap: 4px;
}
.mistake-row .col label {
font-size: 11px;
color: var(--text-muted);
font-weight: 500;
padding-left: 2px;
}
.mistake-row input[type="text"] {
width: 100%; width: 100%;
padding: 9px 12px; padding: 9px 12px;
border: 1.5px solid var(--border); border: 1.5px solid var(--border);
@@ -671,8 +650,10 @@ body {
color: var(--text); color: var(--text);
background: var(--bg); background: var(--bg);
transition: border-color 0.2s, background 0.2s; transition: border-color 0.2s, background 0.2s;
box-sizing: border-box;
} }
.mistake-row input[type="text"]:focus {
.evening-row input[type="text"]:focus {
outline: none; outline: none;
border-color: var(--primary); border-color: var(--primary);
background: var(--card); background: var(--card);