diff --git a/packages/base/src/hooks/useThemeStyleData/__snapshots__/index.test.tsx.snap b/packages/base/src/hooks/useThemeStyleData/__snapshots__/index.test.tsx.snap
index 0e3f47e183..cdd8e0fb01 100644
--- a/packages/base/src/hooks/useThemeStyleData/__snapshots__/index.test.tsx.snap
+++ b/packages/base/src/hooks/useThemeStyleData/__snapshots__/index.test.tsx.snap
@@ -784,6 +784,7 @@ exports[`test base/hooks/useThemeStyleData should match snapshot 3`] = `
"archived": "#52c41a",
"initiated_by_me": "#1677ff",
"pending_for_me": "#fa8c16",
+ "view_all": "#722ed1",
},
},
},
diff --git a/packages/shared/lib/api/sqle/service/GlobalDashboard/index.enum.ts b/packages/shared/lib/api/sqle/service/GlobalDashboard/index.enum.ts
index 8f3fe0cbea..be63331aed 100644
--- a/packages/shared/lib/api/sqle/service/GlobalDashboard/index.enum.ts
+++ b/packages/shared/lib/api/sqle/service/GlobalDashboard/index.enum.ts
@@ -17,7 +17,9 @@ export enum GetGlobalWorkflowListV2FilterCardEnum {
'pending_for_me' = 'pending_for_me',
- 'initiated_by_me' = 'initiated_by_me'
+ 'initiated_by_me' = 'initiated_by_me',
+
+ 'view_all' = 'view_all'
}
export enum GetGlobalWorkflowListV2WorkflowTypeEnum {
diff --git a/packages/shared/lib/api/sqle/service/common.d.ts b/packages/shared/lib/api/sqle/service/common.d.ts
index 581a17455f..0b4e1f88e6 100644
--- a/packages/shared/lib/api/sqle/service/common.d.ts
+++ b/packages/shared/lib/api/sqle/service/common.d.ts
@@ -288,6 +288,8 @@ export interface IGlobalWorkflowStatisticsV2 {
initiated_by_me_count?: number;
pending_for_me_count?: number;
+
+ view_all_count?: number;
}
export interface IAuditResultInfo {
diff --git a/packages/shared/lib/testUtil/mockApi/sqle/globalDashboard/data.ts b/packages/shared/lib/testUtil/mockApi/sqle/globalDashboard/data.ts
index dad10adbe9..11a9c0b4d8 100644
--- a/packages/shared/lib/testUtil/mockApi/sqle/globalDashboard/data.ts
+++ b/packages/shared/lib/testUtil/mockApi/sqle/globalDashboard/data.ts
@@ -15,7 +15,8 @@ import {
export const mockGlobalWorkflowStatisticsData: IGlobalWorkflowStatisticsV2 = {
pending_for_me_count: 8,
initiated_by_me_count: 5,
- archived_count: 12
+ archived_count: 12,
+ view_all_count: 25
};
export const mockGlobalWorkflowListData: IGlobalWorkflowListData = {
diff --git a/packages/sqle/src/locale/en-US/globalDashboard.ts b/packages/sqle/src/locale/en-US/globalDashboard.ts
index 43ee7e1319..fb1a5eb2b5 100644
--- a/packages/sqle/src/locale/en-US/globalDashboard.ts
+++ b/packages/sqle/src/locale/en-US/globalDashboard.ts
@@ -24,7 +24,9 @@ export default {
initiated: 'Initiated By Me',
initiatedSubtitle: 'Track progress',
archived: 'Archived',
- archivedSubtitle: 'Completed tasks'
+ archivedSubtitle: 'Completed tasks',
+ viewAll: 'View All',
+ viewAllSubtitle: 'Visible scope'
},
column: {
name: 'Workflow Name',
diff --git a/packages/sqle/src/locale/zh-CN/globalDashboard.ts b/packages/sqle/src/locale/zh-CN/globalDashboard.ts
index ed8e783ef7..b14a15730d 100644
--- a/packages/sqle/src/locale/zh-CN/globalDashboard.ts
+++ b/packages/sqle/src/locale/zh-CN/globalDashboard.ts
@@ -19,7 +19,9 @@ export default {
initiated: '我发起的',
initiatedSubtitle: '关注进度',
archived: '已归档',
- archivedSubtitle: '已完结任务'
+ archivedSubtitle: '已完结任务',
+ viewAll: '查看全部',
+ viewAllSubtitle: '当前可见范围'
},
column: {
name: '工单名称',
diff --git a/packages/sqle/src/page/GlobalDashboard/__tests__/__snapshots__/index.sqle.test.tsx.snap b/packages/sqle/src/page/GlobalDashboard/__tests__/__snapshots__/index.sqle.test.tsx.snap
index 7623745fc0..ddd94e5aca 100644
--- a/packages/sqle/src/page/GlobalDashboard/__tests__/__snapshots__/index.sqle.test.tsx.snap
+++ b/packages/sqle/src/page/GlobalDashboard/__tests__/__snapshots__/index.sqle.test.tsx.snap
@@ -343,6 +343,45 @@ exports[`GlobalDashboard should render workflow tab by default 1`] = `
已完结任务
+
+
+ 查看全部
+
+
+
+ 当前可见范围
+
+
+
+
+ 查看全部
+
+
+
+ 当前可见范围
+
+
{
const openSpy = jest.spyOn(window, 'open').mockImplementation(jest.fn());
@@ -204,4 +205,79 @@ describe('GlobalDashboard/WorkflowPanel', () => {
})
);
});
+
+ describe('view_all card', () => {
+ const viewAllTestCases = [
+ {
+ name: 'should render four stat cards with the fourth being "查看全部"',
+ action: async () => {
+ superRender();
+ await act(async () => jest.advanceTimersByTime(3000));
+ },
+ assertion: () => {
+ expect(screen.getByText('待我处理')).toBeInTheDocument();
+ expect(screen.getByText('我发起的')).toBeInTheDocument();
+ expect(screen.getByText('已归档')).toBeInTheDocument();
+ expect(screen.getByText('查看全部')).toBeInTheDocument();
+
+ const statCards = document.querySelectorAll('.stat-card-title');
+ expect(statCards).toHaveLength(4);
+ expect(statCards[3].textContent).toBe('查看全部');
+ }
+ },
+ {
+ name: 'should request list with filter_card=view_all when clicking "查看全部" card',
+ action: async () => {
+ superRender();
+ await act(async () => jest.advanceTimersByTime(3000));
+
+ fireEvent.click(screen.getByText('查看全部'));
+ await act(async () => jest.advanceTimersByTime(0));
+ },
+ assertion: () => {
+ expect(getGlobalWorkflowListSpy).toHaveBeenLastCalledWith(
+ expect.objectContaining({
+ filter_card: 'view_all'
+ })
+ );
+ }
+ },
+ {
+ name: 'should not have "查看全部" card selected by default (pending_for_me is default)',
+ action: async () => {
+ superRender();
+ await act(async () => jest.advanceTimersByTime(3000));
+ },
+ assertion: () => {
+ expect(getGlobalWorkflowListSpy).toHaveBeenCalledWith(
+ expect.objectContaining({
+ filter_card: 'pending_for_me'
+ })
+ );
+ }
+ },
+ {
+ name: 'should display view_all_count value on the "查看全部" card',
+ action: async () => {
+ superRender();
+ await act(async () => jest.advanceTimersByTime(3000));
+ },
+ assertion: () => {
+ const expectedCount = String(
+ mockGlobalWorkflowStatisticsData.view_all_count
+ );
+ const statCountElements =
+ document.querySelectorAll('.stat-card-count');
+ expect(statCountElements[3].textContent).toBe(expectedCount);
+ }
+ }
+ ];
+
+ viewAllTestCases.forEach(({ name, action, assertion }) => {
+ it(name, async () => {
+ await action();
+ assertion();
+ });
+ });
+ });
});
diff --git a/packages/sqle/src/page/GlobalDashboard/components/WorkflowPanel/index.tsx b/packages/sqle/src/page/GlobalDashboard/components/WorkflowPanel/index.tsx
index 48f3caa706..fa32022f25 100644
--- a/packages/sqle/src/page/GlobalDashboard/components/WorkflowPanel/index.tsx
+++ b/packages/sqle/src/page/GlobalDashboard/components/WorkflowPanel/index.tsx
@@ -8,6 +8,7 @@ import {
useTableRequestParams
} from '@actiontech/dms-kit';
import {
+ CheckboxMultipleBlankFilled,
ClockCircleOutlined,
EditFilled,
ProfileSquareFilled
@@ -197,6 +198,23 @@ const WorkflowPanel: React.FC = ({
sqleTheme.globalDashboard.filterCardAccent.workflow[
GetGlobalWorkflowListV2FilterCardEnum.archived
]
+ },
+ {
+ key: GetGlobalWorkflowListV2FilterCardEnum.view_all,
+ title: t('globalDashboard.workflow.card.viewAll'),
+ subtitle: t('globalDashboard.workflow.card.viewAllSubtitle'),
+ count: workflowStats.data?.data.data?.view_all_count ?? 0,
+ icon: (
+
+ ),
+ accentColor:
+ sqleTheme.globalDashboard.filterCardAccent.workflow[
+ GetGlobalWorkflowListV2FilterCardEnum.view_all
+ ]
}
];
diff --git a/packages/sqle/src/theme/globalDashboard.ts b/packages/sqle/src/theme/globalDashboard.ts
index aa7ea93f8c..aab037ea55 100644
--- a/packages/sqle/src/theme/globalDashboard.ts
+++ b/packages/sqle/src/theme/globalDashboard.ts
@@ -19,7 +19,8 @@ export const globalDashboardTheme: GlobalDashboardTheme = {
workflow: {
[GetGlobalWorkflowListV2FilterCardEnum.pending_for_me]: '#fa8c16',
[GetGlobalWorkflowListV2FilterCardEnum.initiated_by_me]: '#1677ff',
- [GetGlobalWorkflowListV2FilterCardEnum.archived]: '#52c41a'
+ [GetGlobalWorkflowListV2FilterCardEnum.archived]: '#52c41a',
+ [GetGlobalWorkflowListV2FilterCardEnum.view_all]: '#722ed1'
}
}
};