auto-sync: 2026-05-20 09:27:09
This commit is contained in:
@@ -286,6 +286,8 @@ export default function EdictBoard() {
|
||||
const v2tasks = useStore(s => s.v2tasks);
|
||||
const v2tasksLoading = useStore(s => s.v2tasksLoading);
|
||||
const selectedProjectId = useStore(s => s.selectedProjectId);
|
||||
const setSelectedProjectId = useStore(s => s.setSelectedProjectId);
|
||||
const projects = useStore(s => s.projects);
|
||||
const loadV2Tasks = useStore(s => s.loadV2Tasks);
|
||||
const toast = useStore(s => s.toast);
|
||||
const loadV2TaskDetail = useStore(s => s.loadV2TaskDetail);
|
||||
@@ -410,9 +412,22 @@ export default function EdictBoard() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 第 1 行:归档控制 */}
|
||||
{/* 第 1 行:项目切换 + 归档控制 */}
|
||||
<div style={{ display: 'flex', alignItems: 'center', gap: 6, marginBottom: 8 }}>
|
||||
{(['active', 'archived', 'all'] as const).map(f => (
|
||||
<select
|
||||
value={selectedProjectId || ''}
|
||||
onChange={(e) => setSelectedProjectId(e.target.value || null)}
|
||||
style={{
|
||||
fontSize: 11, padding: '3px 8px', borderRadius: 6,
|
||||
border: '1px solid var(--line)', background: 'var(--panel)',
|
||||
color: 'var(--fg)', cursor: 'pointer', minWidth: 120,
|
||||
}}
|
||||
>
|
||||
<option value="">📋 全部任务</option>
|
||||
{Object.entries(projects).map(([pid, info]: [string, any]) => (
|
||||
<option key={pid} value={pid}>📁 {info.name || pid}</option>
|
||||
))}
|
||||
</select>
|
||||
<button key={f} onClick={() => setArchiveFilter(f)} style={{
|
||||
padding: '3px 10px', borderRadius: 6, fontSize: 11,
|
||||
border: `1px solid ${archiveFilter === f ? 'var(--acc)' : '#2a3550'}`,
|
||||
|
||||
Reference in New Issue
Block a user