feat(V0.2): 标题30字+智能拆分 / 时间标记 MM-dd / 时间词前缀 (T-TK-14~16)
Docker Build and Push / build-image (push) Successful in 1m25s
Docker Build and Push / build-image (push) Successful in 1m25s
- 标题上限收紧至 30 字 (服务端校验+详情编辑框); 快速添加输入框 放宽到 200 字: 超长时在 30 字内分隔符处截断为标题, 完整原文进描述 - Task.markDate (DateTime, 迁移 20261025120000): 详情页 DatePicker 选择/清除, 列表行与看板卡显示 MM-dd 小标签 - 快速添加时间词前缀: 今天/明天/后天/本周/下周/本月/下月 开头 (后跟分隔符) 自动设为时间标记并移出标题; 本周=本周日, 本月=月末 - 需求/功能/数据库设计文档同步更新 T-TK-14~16 与 Task 表字段
This commit is contained in:
@@ -3,6 +3,7 @@ import { ActionSheet, Dialog, DotLoading, Toast } from 'antd-mobile'
|
||||
import { projectApi, taskApi } from '../../api/task.js'
|
||||
import { filterVisible, msToNextBoundary } from './date.js'
|
||||
import { getViewMode, setViewMode } from './prefs.js'
|
||||
import { parseTimePrefix, splitTitle } from './quickAdd.js'
|
||||
import ListView from './ListView.jsx'
|
||||
import BoardView from './BoardView.jsx'
|
||||
import TaskDetail from './TaskDetail.jsx'
|
||||
@@ -141,12 +142,21 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
|
||||
} catch { /* ignore */ }
|
||||
}
|
||||
|
||||
/** 新建任务 */
|
||||
async function createTask(title, parentId = null) {
|
||||
const t = String(title || '').trim()
|
||||
if (!t) return
|
||||
/** 新建任务 (快速添加): 时间词前缀 → 时间标记; 超过 30 字在分隔符处截断,
|
||||
* 前段为标题, 余文并入描述 (T-TK-14/16) */
|
||||
async function createTask(rawTitle, parentId = null) {
|
||||
const raw = String(rawTitle || '').trim()
|
||||
if (!raw) return
|
||||
const { markDate, rest } = parseTimePrefix(raw)
|
||||
const { title, desc } = splitTitle(rest)
|
||||
if (!title) return
|
||||
try {
|
||||
await taskApi.create(projectId, { title: t, parentId })
|
||||
await taskApi.create(projectId, {
|
||||
title,
|
||||
description: desc || undefined,
|
||||
markDate: markDate || undefined,
|
||||
parentId,
|
||||
})
|
||||
setAdding(false)
|
||||
load()
|
||||
} catch (e) {
|
||||
@@ -232,7 +242,8 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
|
||||
<input
|
||||
className="inp"
|
||||
autoFocus
|
||||
placeholder="输入任务标题,回车创建"
|
||||
maxLength={200}
|
||||
placeholder="输入任务标题,回车创建;开头可用 今天/明天/本周/本月 等时间词"
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === 'Enter') createTask(e.currentTarget.value)
|
||||
if (e.key === 'Escape') setAdding(false)
|
||||
|
||||
Reference in New Issue
Block a user