Skip to content

Commit b4bda1e

Browse files
committed
Merge branch 'dev'
2 parents 06ce07f + f014a29 commit b4bda1e

10 files changed

Lines changed: 248 additions & 199 deletions

File tree

package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"@dnd-kit/utilities": "^3.2.2",
2323
"@monaco-editor/react": "^4.7.0",
2424
"@tanstack/react-query": "^5.90.21",
25-
"@tanstack/react-router": "^1.166.3",
25+
"@tanstack/react-router": "^1.166.7",
2626
"@xyflow/react": "^12.10.1",
2727
"@zxcvbn-ts/core": "^3.0.4",
2828
"ahooks": "^3.9.6",
@@ -33,7 +33,7 @@
3333
"dayjs": "^1.11.19",
3434
"echarts": "^6.0.0",
3535
"html-to-image": "^1.11.13",
36-
"i18next": "^25.8.15",
36+
"i18next": "^25.8.17",
3737
"jsencrypt": "^3.5.4",
3838
"keepalive-for-react": "5.0.6",
3939
"lodash-es": "^4.17.23",
@@ -50,11 +50,11 @@
5050
},
5151
"devDependencies": {
5252
"@biomejs/biome": "^2.4.6",
53-
"@iconify/json": "^2.2.447",
53+
"@iconify/json": "^2.2.448",
5454
"@svgr/core": "^8.1.0",
5555
"@svgr/plugin-jsx": "^8.1.0",
5656
"@tailwindcss/vite": "^4.2.1",
57-
"@tanstack/react-router-devtools": "^1.166.3",
57+
"@tanstack/react-router-devtools": "^1.166.7",
5858
"@types/crypto-js": "^4.2.2",
5959
"@types/lodash-es": "^4.17.12",
6060
"@types/node": "^22.19.15",
@@ -64,7 +64,7 @@
6464
"@types/react-resizable": "^3.0.8",
6565
"@vitejs/plugin-react": "^5.1.4",
6666
"babel-plugin-react-compiler": "^1.0.0",
67-
"sass-embedded": "^1.97.3",
67+
"sass-embedded": "^1.98.0",
6868
"tailwindcss": "^4.2.1",
6969
"typescript": "~5.9.3",
7070
"unplugin-icons": "^23.0.1",

src/layouts/Header/component/UserDropdown/index.tsx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -95,24 +95,25 @@ const UserDropdown: React.FC = () => {
9595
onSuccess: () => {
9696
// 清空当前标签页
9797
resetTabs();
98-
99-
// 显示成功消息
100-
message.success('角色切换成功,页面将刷新');
101-
102-
// 延迟刷新页面,让用户看到成功消息
103-
setTimeout(() => {
104-
window.location.reload();
105-
}, 1000);
98+
window.location.reload();
10699
},
107100
onError: (error) => {
108-
console.error('角色切换失败:', error);
109-
message.error('角色切换失败');
101+
message.error(`角色切换失败: ${error.message}`);
110102
},
111103
});
112104

113-
// 角色切换处理
105+
// 角色切换处理:先确认再切换并整体刷新
114106
const handleRoleSwitch = (roleId: string) => {
115-
roleSwitchMutation.mutate(roleId);
107+
modal.confirm({
108+
title: '切换角色',
109+
icon: <ExclamationCircleOutlined />,
110+
content: '切换角色后,系统将整体刷新以加载新角色权限与菜单,是否继续?',
111+
okText: '确定',
112+
cancelText: '取消',
113+
onOk: () => {
114+
roleSwitchMutation.mutate(roleId);
115+
},
116+
});
116117
};
117118

118119
// 菜单栏

src/views/system/Dict/components/TableActionButtons.tsx

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -47,30 +47,34 @@ const TableActionButtons: React.FC<TableActionButtonsProps> = ({
4747
return (
4848
<div className="flex grow items-center justify-between">
4949
<Space size="middle">
50-
{canAdd && (
51-
<Button type="primary" icon={<PlusOutlined />} onClick={() => openModal('add')}>
52-
{t('common.operation.add')}
50+
<Button
51+
type="primary"
52+
icon={<PlusOutlined />}
53+
disabled={!canAdd}
54+
onClick={() => openModal('add')}
55+
>
56+
{t('common.operation.add')}
57+
</Button>
58+
<Upload accept=".csv,.xlsx,.xls" showUploadList={false} beforeUpload={handleFileUpload}>
59+
<Button icon={<FolderImport className="block!" />} disabled={!canImport}>
60+
导入
5361
</Button>
54-
)}
55-
{canImport && (
56-
<Upload accept=".csv,.xlsx,.xls" showUploadList={false} beforeUpload={handleFileUpload}>
57-
<Button icon={<FolderImport className="block!" />}>导入</Button>
58-
</Upload>
59-
)}
60-
{canExport && (
61-
<Dropdown menu={{ items: exportItems }} placement="bottom">
62-
<Button icon={<FolderExport className="block!" />}>
63-
导出
64-
{selectedRowKeys.length > 0 && <Badge count={selectedRowKeys.length} size="small" className="ml-1" />}
65-
</Button>
66-
</Dropdown>
67-
)}
68-
{canDelete && (
69-
<Button danger icon={<DeleteOutlined />} onClick={onBatchDelete} disabled={selectedRowKeys.length === 0}>
70-
批量删除
62+
</Upload>
63+
<Dropdown menu={{ items: exportItems }} placement="bottom" disabled={!canExport}>
64+
<Button icon={<FolderExport className="block!" />} disabled={!canExport}>
65+
导出
7166
{selectedRowKeys.length > 0 && <Badge count={selectedRowKeys.length} size="small" className="ml-1" />}
7267
</Button>
73-
)}
68+
</Dropdown>
69+
<Button
70+
danger
71+
icon={<DeleteOutlined />}
72+
onClick={onBatchDelete}
73+
disabled={selectedRowKeys.length === 0 || !canDelete}
74+
>
75+
批量删除
76+
{selectedRowKeys.length > 0 && <Badge count={selectedRowKeys.length} size="small" className="ml-1" />}
77+
</Button>
7478
</Space>
7579
</div>
7680
);

src/views/system/Menu/index.tsx

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -131,20 +131,21 @@ const Menu: React.FC = () => {
131131
rowKey="id"
132132
actionButtons={
133133
<div className="flex gap-2">
134-
{permissions.canAddMenu && (
135-
<Button type="primary" icon={<PlusOutlined />} onClick={() => openModal('add')}>
136-
新增菜单
137-
</Button>
138-
)}
139-
{permissions.canDeleteMenu && (
140-
<Button
141-
danger
142-
onClick={() => handleBatchDelete(selectedRowKeys)}
143-
disabled={selectedRowKeys.length === 0}
144-
>
145-
批量删除
146-
</Button>
147-
)}
134+
<Button
135+
type="primary"
136+
icon={<PlusOutlined />}
137+
disabled={!permissions.canAddMenu}
138+
onClick={() => openModal('add')}
139+
>
140+
新增菜单
141+
</Button>
142+
<Button
143+
danger
144+
onClick={() => handleBatchDelete(selectedRowKeys)}
145+
disabled={selectedRowKeys.length === 0 || !permissions.canDeleteMenu}
146+
>
147+
批量删除
148+
</Button>
148149
</div>
149150
}
150151
onRefresh={refetch}

src/views/system/Params/components/TableActionButtons.tsx

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -55,35 +55,46 @@ const TableActionButtons: React.FC<TableActionButtonsProps> = ({
5555
<div className="flex grow items-center justify-between">
5656
{/* 左侧主要操作按钮 */}
5757
<Space size="middle">
58-
{canAdd && (
59-
<Button type="primary" icon={<PlusOutlined />} onClick={() => openModal('add')}>
60-
新增
58+
<Button
59+
type="primary"
60+
icon={<PlusOutlined />}
61+
disabled={!canAdd}
62+
onClick={() => openModal('add')}
63+
>
64+
新增
65+
</Button>
66+
<Upload accept=".xlsx,.xls,.csv" showUploadList={false} beforeUpload={handleFileUpload}>
67+
<Button icon={<FolderImport className="block!" />} disabled={!canImport}>
68+
导入
6169
</Button>
62-
)}
63-
{canImport && (
64-
<Upload accept=".xlsx,.xls,.csv" showUploadList={false} beforeUpload={handleFileUpload}>
65-
<Button icon={<FolderImport className="block!" />}>导入</Button>
66-
</Upload>
67-
)}
70+
</Upload>
6871

69-
{canExport && (
70-
<Space.Compact>
71-
<Button disabled={selectedRows.length === 0} icon={<FolderExport className="block!" />}>
72-
导出
73-
{selectedRows.length > 0 && <Badge count={selectedRows.length} size="small" className="ml-1" />}
74-
</Button>
75-
<Dropdown disabled={selectedRows.length === 0} menu={{ items: exportItems }} placement="bottom">
76-
<Button icon={<DownOutlined />} />
77-
</Dropdown>
78-
</Space.Compact>
79-
)}
80-
81-
{canDelete && (
82-
<Button icon={<DeleteOutlined />} onClick={handleBatchDelete} disabled={selectedRows.length === 0} danger>
83-
批量删除
72+
<Space.Compact>
73+
<Button
74+
disabled={selectedRows.length === 0 || !canExport}
75+
icon={<FolderExport className="block!" />}
76+
>
77+
导出
8478
{selectedRows.length > 0 && <Badge count={selectedRows.length} size="small" className="ml-1" />}
8579
</Button>
86-
)}
80+
<Dropdown
81+
disabled={selectedRows.length === 0 || !canExport}
82+
menu={{ items: exportItems }}
83+
placement="bottom"
84+
>
85+
<Button icon={<DownOutlined />} />
86+
</Dropdown>
87+
</Space.Compact>
88+
89+
<Button
90+
icon={<DeleteOutlined />}
91+
onClick={handleBatchDelete}
92+
disabled={selectedRows.length === 0 || !canDelete}
93+
danger
94+
>
95+
批量删除
96+
{selectedRows.length > 0 && <Badge count={selectedRows.length} size="small" className="ml-1" />}
97+
</Button>
8798
</Space>
8899
</div>
89100
);

src/views/system/Params/hooks/useParamTableColumn.tsx

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -119,16 +119,23 @@ export const useParamTableColumns = (props: UseParamTableColumnProps) => {
119119
fixed: 'end',
120120
render: (_: any, record: SysParam) => (
121121
<>
122-
{canEdit && (
123-
<Button size="small" type="link" onClick={() => onEdit(record)}>
124-
{t('common.operation.edit')}
125-
</Button>
126-
)}
127-
{canDelete && (
128-
<Button size="small" type="link" danger onClick={() => onDelete(record)}>
129-
{t('common.operation.delete')}
130-
</Button>
131-
)}
122+
<Button
123+
size="small"
124+
type="link"
125+
disabled={!canEdit}
126+
onClick={() => onEdit(record)}
127+
>
128+
{t('common.operation.edit')}
129+
</Button>
130+
<Button
131+
size="small"
132+
type="link"
133+
danger
134+
disabled={!canDelete}
135+
onClick={() => onDelete(record)}
136+
>
137+
{t('common.operation.delete')}
138+
</Button>
132139
</>
133140
),
134141
},

src/views/system/Permission/components/TableActionButtons.tsx

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -107,36 +107,44 @@ const TableActionButtons: React.FC<TableActionButtonsProps> = ({
107107
<div className="flex grow items-center justify-between">
108108
<Space size="middle">
109109
{/* 新增按钮 */}
110-
{canAdd && (
111-
<Button type="primary" icon={<PlusOutlined />} onClick={() => openModal('add')}>
112-
{t('common.operation.add')}
113-
</Button>
114-
)}
110+
<Button
111+
type="primary"
112+
icon={<PlusOutlined />}
113+
disabled={!canAdd}
114+
onClick={() => openModal('add')}
115+
>
116+
{t('common.operation.add')}
117+
</Button>
115118

116119
{/* 导入按钮 */}
117-
{canImport && (
118-
<Upload
119-
accept=".xlsx,.xls"
120-
showUploadList={false}
121-
action="/api/system/permission/import"
122-
onChange={handleImportChange}
123-
>
124-
<Button icon={<FolderImport className="block!" />}>{t('common.operation.import')}</Button>
125-
</Upload>
126-
)}
120+
<Upload
121+
accept=".xlsx,.xls"
122+
showUploadList={false}
123+
action="/api/system/permission/import"
124+
onChange={handleImportChange}
125+
>
126+
<Button icon={<FolderImport className="block!" />} disabled={!canImport}>
127+
{t('common.operation.import')}
128+
</Button>
129+
</Upload>
127130

128131
{/* 导出按钮 */}
129-
{canExport && (
130-
<Space.Compact>
131-
<Button disabled={selectedRows.length === 0} icon={<FolderExport className="block!" />}>
132-
{t('common.operation.export')}
133-
{selectedRows.length > 0 && <Badge count={selectedRows.length} size="small" className="ml-1" />}
134-
</Button>
135-
<Dropdown disabled={selectedRows.length === 0} menu={{ items: exportItems }} placement="bottom">
136-
<Button icon={<DownOutlined />} />
137-
</Dropdown>
138-
</Space.Compact>
139-
)}
132+
<Space.Compact>
133+
<Button
134+
disabled={selectedRows.length === 0 || !canExport}
135+
icon={<FolderExport className="block!" />}
136+
>
137+
{t('common.operation.export')}
138+
{selectedRows.length > 0 && <Badge count={selectedRows.length} size="small" className="ml-1" />}
139+
</Button>
140+
<Dropdown
141+
disabled={selectedRows.length === 0 || !canExport}
142+
menu={{ items: exportItems }}
143+
placement="bottom"
144+
>
145+
<Button icon={<DownOutlined />} />
146+
</Dropdown>
147+
</Space.Compact>
140148

141149
{/* 批量操作下拉菜单 */}
142150
<Space.Compact>

0 commit comments

Comments
 (0)