Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
A
audit_project_manager
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
David Yang
audit_project_manager
Commits
1425776f
Commit
1425776f
authored
Sep 02, 2026
by
drigle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: honor shortTitle in record dialog
parent
1b7e20fc
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
6 deletions
+11
-6
DynamicRecordDialog.jsx
src/components/DynamicRecordDialog.jsx
+9
-4
project-management.business-flow.md
...es/project_manager_xy/project-management.business-flow.md
+2
-2
No files found.
src/components/DynamicRecordDialog.jsx
View file @
1425776f
...
...
@@ -23,6 +23,7 @@ import {
getViewRestrictionDefaults
,
normalizeProjectYearDisplay
,
normalizeValueForSubmit
,
shouldHideViewTitleColumn
,
toArray
,
}
from
'@/utils/subjectView'
;
import
{
Delete
}
from
'@/components/AppIcons'
;
...
...
@@ -110,10 +111,13 @@ function getDialogColumns(subject, view) {
);
}
// shortTitle only controls the grid title presentation. Keep an explicitly configured
// title field available here so its requiredness can still follow the view config.
const
hideTitleColumn
=
shouldHideViewTitleColumn
(
view
);
const
columns
=
buildViewColumns
(
view
,
subject
,
{
includeHidden
:
true
})
.
filter
((
column
)
=>
column
?.
field
&&
!
column
.
hide
)
.
filter
((
column
)
=>
(
column
?.
field
&&
!
column
.
hide
&&
(
!
hideTitleColumn
||
column
.
field
!==
'title'
)
))
.
map
((
column
)
=>
{
if
(
column
.
field
!==
'title'
)
return
column
;
return
{
...
...
@@ -590,6 +594,7 @@ export default function DynamicRecordDialog({
const
[
saving
,
setSaving
]
=
useState
(
false
);
const
[
error
,
setError
]
=
useState
(
''
);
const
editing
=
Boolean
(
record
);
const
hideTitle
=
shouldHideViewTitleColumn
(
view
);
const
dialogColumns
=
useMemo
(
()
=>
getDialogColumns
(
subject
,
view
),
[
subject
,
view
],
...
...
@@ -660,7 +665,7 @@ export default function DynamicRecordDialog({
};
if
(
titleColumn
&&
title
.
trim
())
{
payload
.
title
=
title
.
trim
();
}
else
if
(
restrictionDefaults
.
title
!==
undefined
)
{
}
else
if
(
!
hideTitle
&&
restrictionDefaults
.
title
!==
undefined
)
{
payload
.
title
=
restrictionDefaults
.
title
;
}
await
createRecord
(
payload
);
...
...
src/pages/project_manager_xy/project-management.business-flow.md
View file @
1425776f
...
...
@@ -27,7 +27,7 @@
## 2. 项目列表与详情
1.
页面通过
`loadSubject`
、
`getSubjectView`
和
`POST /record/query`
读取字段、视图和记录。
2.
表格列、视图限制、排序、选择字段选项和字段分组来自服务端配置;字段分组读取当前 Grid View 的
`settings.groups`
,按配置展示分组表头并支持展开或收起。当前 Grid View 的
`settings.shortTitle === true`
时
只隐藏通用
`title`
展示列;
`false`
或未配置时正常展示。
`title`
数据参与排序、详情和保存
,详情入口保留在项目名称和固定操作列。筛选清单根据当前 View 的字段配置和类型自动生成,文本类字段使用模糊匹配,选择/布尔字段使用枚举值,日期使用当天范围,数字使用精确值,引用/用户字段使用 ID;用户填写或选择条件后点击“查询”才提交,所有字段筛选与分页均通过
`POST /record/query`
远程执行,浏览器不再加载全部记录后本地过滤。
2.
表格列、视图限制、排序、选择字段选项和字段分组来自服务端配置;字段分组读取当前 Grid View 的
`settings.groups`
,按配置展示分组表头并支持展开或收起。当前 Grid View 的
`settings.shortTitle === true`
时
隐藏通用
`title`
展示列及新建/编辑弹窗中的根记录标题字段;
`false`
或未配置时正常展示。隐藏时不校验或提交根级
`title`
,
`title`
数据仍可参与排序、详情和其他保存流程
,详情入口保留在项目名称和固定操作列。筛选清单根据当前 View 的字段配置和类型自动生成,文本类字段使用模糊匹配,选择/布尔字段使用枚举值,日期使用当天范围,数字使用精确值,引用/用户字段使用 ID;用户填写或选择条件后点击“查询”才提交,所有字段筛选与分页均通过
`POST /record/query`
远程执行,浏览器不再加载全部记录后本地过滤。
切换 Grid View 时立即切换当前视图、清空跨视图选择并回到第一页,同时重新读取 Subject、视图配置和
`/record/query`
数据;不再额外写死项目状态筛选,当前视图配置包含该字段时才自动生成对应的选择筛选,视图标签仍用于切换服务端配置的视图限制;刷新期间不展示上一次请求的记录行,表格在当前可视区域中心显示加载状态,失败时保留错误反馈并清空不可确认的旧数据。
项目列表表格使用限定高度的内部滚动区域,支持纵向和横向滚动;表头在表格滚动区域内吸顶,分页位于滚动区域外,避免页面因记录行过多持续向下延伸。
View 中兼容历史字段
`metadata.project_finish_time`
时按数据定义显示为“项目完成时间”;
...
...
@@ -35,7 +35,7 @@
3.
新建和编辑时业务字段统一写入
`metadata`
;引用和用户字段只提交 ID,日期提交 ISO 8601。
4.
编辑模式下主键字段禁用;必填字段按 Subject 配置校验。
5.
新建与编辑弹窗的空控件按可见字段标签显示输入、选择或搜索提示;提示仅用于界面引导,不参与校验,也不写入提交数据。
新建弹窗按当前 Grid View 的列配置决定字段可见性,并按
`settings.groups`
的子字段顺序排列;根记录标题仅在 View 配置了标题列
时展示,是否必填由该列配置决定。创建时未填写的可选标题
不写入空字符串。
`form`
类型字段复用详情侧栏的动态表单编辑器,支持模板、分组和数据行维护,不再以 JSON 长文本输入。
新建弹窗按当前 Grid View 的列配置决定字段可见性,并按
`settings.groups`
的子字段顺序排列;根记录标题仅在 View 配置了标题列
且
`settings.shortTitle !== true`
时展示,是否必填由该列配置决定。隐藏标题时创建不写入根级
`title`
;创建时未填写的可选标题也
不写入空字符串。
`form`
类型字段复用详情侧栏的动态表单编辑器,支持模板、分组和数据行维护,不再以 JSON 长文本输入。
从当前 Grid View 新建记录时,系统同时读取
`settings.restrictions`
中的字段约束;对于
`$eq`
或单值
`$in`
约束,自动把唯一值写入新记录的
`metadata`
(约束字段在创建过程中不可修改,即使未配置为弹窗列也会写入)。多值集合或否定比较无法确定唯一归属时阻止创建并提示调整视图配置;编辑已有记录时保留记录原值,不用视图约束覆盖。
6.
删除调用
`POST /record/batch/remove`
,默认软删除;列表行内不提供编辑、复制或归档按钮,字段维护统一从详情侧栏进入。
7.
详情弹窗按符合条件的 detail 视图显示字段,并支持字段内联维护;当前 Detail View 的
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment