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
3cc706f5
Commit
3cc706f5
authored
Aug 31, 2026
by
drigle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: refresh records when switching project views
parent
dfebeb43
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
21 deletions
+14
-21
SubjectRecordWorkbench.jsx
src/components/SubjectRecordWorkbench.jsx
+13
-21
project-management.business-flow.md
...es/project_manager_xy/project-management.business-flow.md
+1
-0
No files found.
src/components/SubjectRecordWorkbench.jsx
View file @
3cc706f5
...
@@ -5,7 +5,6 @@ import {
...
@@ -5,7 +5,6 @@ import {
batchRemoveRecords
,
batchRemoveRecords
,
cloneRecord
,
cloneRecord
,
}
from
'@/services/DataService'
;
}
from
'@/services/DataService'
;
import
{
getSelectOptions
}
from
'@/utils/subjectView'
;
import
{
Copy
,
Delete
,
Edit
,
PlusIcon
}
from
'@/components/AppIcons'
;
import
{
Copy
,
Delete
,
Edit
,
PlusIcon
}
from
'@/components/AppIcons'
;
import
{
useCallback
,
useEffect
,
useMemo
,
useState
}
from
'react'
;
import
{
useCallback
,
useEffect
,
useMemo
,
useState
}
from
'react'
;
import
DynamicRecordDialog
from
'./DynamicRecordDialog'
;
import
DynamicRecordDialog
from
'./DynamicRecordDialog'
;
...
@@ -13,9 +12,7 @@ import {
...
@@ -13,9 +12,7 @@ import {
buildConfiguredWorkbenchView
,
buildConfiguredWorkbenchView
,
buildGridViews
,
buildGridViews
,
buildViewCountMap
,
buildViewCountMap
,
collectProjectStatuses
,
collectProjectYears
,
collectProjectYears
,
findSubjectField
,
loadSubjectWorkbenchResources
,
loadSubjectWorkbenchResources
,
}
from
'@/pages/project_manager_xy/SubjectWorkbenchService'
;
}
from
'@/pages/project_manager_xy/SubjectWorkbenchService'
;
...
@@ -90,6 +87,17 @@ export default function SubjectRecordWorkbench({
...
@@ -90,6 +87,17 @@ export default function SubjectRecordWorkbench({
reload
();
reload
();
},
[
reload
]);
},
[
reload
]);
const
handleViewChange
=
useCallback
(
async
(
viewName
)
=>
{
if
(
!
viewName
||
viewName
===
activeViewName
)
{
return
;
}
setActiveViewName
(
viewName
);
setSelectedIds
([]);
setPage
(
0
);
await
reload
({
keepFeedback
:
true
});
},
[
activeViewName
,
reload
]);
const
gridViews
=
useMemo
(()
=>
buildGridViews
(
views
),
[
views
]);
const
gridViews
=
useMemo
(()
=>
buildGridViews
(
views
),
[
views
]);
useEffect
(()
=>
{
useEffect
(()
=>
{
...
@@ -138,7 +146,6 @@ export default function SubjectRecordWorkbench({
...
@@ -138,7 +146,6 @@ export default function SubjectRecordWorkbench({
()
=>
buildViewCountMap
(
records
,
filters
,
gridViews
,
subject
),
()
=>
buildViewCountMap
(
records
,
filters
,
gridViews
,
subject
),
[
records
,
filters
,
gridViews
,
subject
],
[
records
,
filters
,
gridViews
,
subject
],
);
);
const
statusField
=
findSubjectField
(
subject
,
'project_status'
);
const
filterSchema
=
useMemo
(()
=>
{
const
filterSchema
=
useMemo
(()
=>
{
const
fields
=
[
const
fields
=
[
{
{
...
@@ -149,23 +156,12 @@ export default function SubjectRecordWorkbench({
...
@@ -149,23 +156,12 @@ export default function SubjectRecordWorkbench({
placeholder
:
'请输入关键词'
,
placeholder
:
'请输入关键词'
,
},
},
];
];
if
(
statusField
)
{
const
configuredStatusOptions
=
getSelectOptions
(
statusField
);
fields
.
push
({
key
:
'status'
,
label
:
statusField
.
label
||
'项目状态'
,
type
:
'select'
,
options
:
configuredStatusOptions
.
length
>
0
?
configuredStatusOptions
:
collectProjectStatuses
(
records
),
});
}
const
yearOptions
=
collectProjectYears
(
records
);
const
yearOptions
=
collectProjectYears
(
records
);
if
(
yearOptions
.
length
>
0
)
{
if
(
yearOptions
.
length
>
0
)
{
fields
.
push
({
key
:
'year'
,
label
:
'项目年度'
,
type
:
'select'
,
options
:
yearOptions
});
fields
.
push
({
key
:
'year'
,
label
:
'项目年度'
,
type
:
'select'
,
options
:
yearOptions
});
}
}
return
fields
;
return
fields
;
},
[
statusField
,
records
]);
},
[
records
]);
const
feedbackHelpers
=
useMemo
(()
=>
({
const
feedbackHelpers
=
useMemo
(()
=>
({
reload
,
reload
,
...
@@ -303,11 +299,7 @@ export default function SubjectRecordWorkbench({
...
@@ -303,11 +299,7 @@ export default function SubjectRecordWorkbench({
summaryItems=
{
summaryItems
}
summaryItems=
{
summaryItems
}
views=
{
gridViews
.
map
((
view
)
=>
({
...
view
,
count
:
viewCounts
[
view
.
name
]
||
0
}))
}
views=
{
gridViews
.
map
((
view
)
=>
({
...
view
,
count
:
viewCounts
[
view
.
name
]
||
0
}))
}
activeViewName=
{
activeView
?.
name
||
''
}
activeViewName=
{
activeView
?.
name
||
''
}
onViewChange=
{
(
viewName
)
=>
{
onViewChange=
{
handleViewChange
}
setActiveViewName
(
viewName
);
setSelectedIds
([]);
setPage
(
0
);
}
}
filters=
{
filters
}
filters=
{
filters
}
filterSchema=
{
filterSchema
}
filterSchema=
{
filterSchema
}
onFiltersChange=
{
(
key
,
value
)
=>
{
onFiltersChange=
{
(
key
,
value
)
=>
{
...
...
src/pages/project_manager_xy/project-management.business-flow.md
View file @
3cc706f5
...
@@ -28,6 +28,7 @@
...
@@ -28,6 +28,7 @@
1.
页面通过
`loadSubject`
、
`getSubjectView`
和
`POST /record/query`
读取字段、视图和记录。
1.
页面通过
`loadSubject`
、
`getSubjectView`
和
`POST /record/query`
读取字段、视图和记录。
2.
表格列、视图限制、排序、选择字段选项和字段分组来自服务端配置;字段分组读取当前 Grid View 的
`settings.groups`
,按配置展示分组表头并支持展开或收起。当前 Grid View 的
`settings.shortTitle === true`
时只隐藏通用
`title`
展示列;
`false`
或未配置时正常展示。
`title`
数据仍参与关键词搜索、排序、详情和保存,详情入口保留在项目名称和固定操作列。
2.
表格列、视图限制、排序、选择字段选项和字段分组来自服务端配置;字段分组读取当前 Grid View 的
`settings.groups`
,按配置展示分组表头并支持展开或收起。当前 Grid View 的
`settings.shortTitle === true`
时只隐藏通用
`title`
展示列;
`false`
或未配置时正常展示。
`title`
数据仍参与关键词搜索、排序、详情和保存,详情入口保留在项目名称和固定操作列。
切换 Grid View 时立即切换当前视图、清空跨视图选择并回到第一页,同时重新读取 Subject、视图配置和
`/record/query`
数据;项目状态不再单独提供下拉筛选,按顶部 Grid View Tabs 切换。
View 中兼容历史字段
`metadata.project_finish_time`
时按数据定义显示为“项目完成时间”;
View 中兼容历史字段
`metadata.project_finish_time`
时按数据定义显示为“项目完成时间”;
内部
`metadata.*`
路径不作为可见表头,字段取值路径和服务端配置保持不变。
内部
`metadata.*`
路径不作为可见表头,字段取值路径和服务端配置保持不变。
3.
新建和编辑时业务字段统一写入
`metadata`
;引用和用户字段只提交 ID,日期提交 ISO 8601。
3.
新建和编辑时业务字段统一写入
`metadata`
;引用和用户字段只提交 ID,日期提交 ISO 8601。
...
...
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