refactor: 消除前端52处any类型+删除冗余requirements.txt+调试print改日志
- 删除 requirements.txt,pyproject.toml 为唯一依赖源(含 requests[socks] extra) - core/geetest 下 5 处 print() 替换为 loguru logger.debug() - api/modules.ts 新增 13 个响应接口,消除所有 api.xxx<any, any> - 新建 utils/error.ts 提供 getErrorMessage(e: unknown) 安全取消息 - 11 个页面组件 catch (e: any) 改为 catch (e: unknown) - useState<any[]>、columns: any[]、render 参数全部类型化 - TypeScript 类型检查零错误通过
This commit is contained in:
@@ -6,6 +6,7 @@ import {
|
||||
import { PlusOutlined, EditOutlined, DeleteOutlined, SafetyOutlined } from '@ant-design/icons';
|
||||
import { userApi, type UserInfo } from '../api/modules';
|
||||
import { getUser, hasPerm } from '../store/auth';
|
||||
import { getErrorMessage } from '../utils/error';
|
||||
|
||||
const ROLE_OPTIONS = [
|
||||
{ value: 'super_admin', label: '超级管理员' },
|
||||
@@ -57,8 +58,8 @@ export default function UsersPage() {
|
||||
try {
|
||||
const data = await userApi.list();
|
||||
setUsers(data);
|
||||
} catch (e: any) {
|
||||
message.error(e.message);
|
||||
} catch (e: unknown) {
|
||||
message.error(getErrorMessage(e));
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
@@ -89,7 +90,7 @@ export default function UsersPage() {
|
||||
try {
|
||||
const values = await form.validateFields();
|
||||
if (editing) {
|
||||
const updateData: any = { role: values.role, remark: values.remark };
|
||||
const updateData: { role: string; remark: string; password?: string } = { role: values.role, remark: values.remark };
|
||||
if (values.password) updateData.password = values.password;
|
||||
await userApi.update(editing.id, updateData);
|
||||
message.success('已更新');
|
||||
@@ -99,8 +100,8 @@ export default function UsersPage() {
|
||||
}
|
||||
setModalOpen(false);
|
||||
loadUsers();
|
||||
} catch (e: any) {
|
||||
message.error(e.message);
|
||||
} catch (e: unknown) {
|
||||
message.error(getErrorMessage(e));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -109,8 +110,8 @@ export default function UsersPage() {
|
||||
await userApi.delete(id);
|
||||
message.success('已删除');
|
||||
loadUsers();
|
||||
} catch (e: any) {
|
||||
message.error(e.message);
|
||||
} catch (e: unknown) {
|
||||
message.error(getErrorMessage(e));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -131,8 +132,8 @@ export default function UsersPage() {
|
||||
setUseCustom(false);
|
||||
setSelectedPerms(data.role_permissions?.[user.role] || []);
|
||||
}
|
||||
} catch (e: any) {
|
||||
message.error(e.message);
|
||||
} catch (e: unknown) {
|
||||
message.error(getErrorMessage(e));
|
||||
} finally {
|
||||
setPermLoading(false);
|
||||
}
|
||||
@@ -148,8 +149,8 @@ export default function UsersPage() {
|
||||
message.success('权限已更新');
|
||||
setPermModalOpen(false);
|
||||
loadUsers();
|
||||
} catch (e: any) {
|
||||
message.error(e.message);
|
||||
} catch (e: unknown) {
|
||||
message.error(getErrorMessage(e));
|
||||
} finally {
|
||||
setPermLoading(false);
|
||||
}
|
||||
@@ -175,7 +176,7 @@ export default function UsersPage() {
|
||||
title: '权限模式',
|
||||
dataIndex: 'custom_permissions',
|
||||
width: 100,
|
||||
render: (_: any, record: UserInfo) =>
|
||||
render: (_: unknown, record: UserInfo) =>
|
||||
record.custom_permissions !== null && record.custom_permissions !== undefined
|
||||
? <Tag color="orange">自定义</Tag>
|
||||
: <Tag>角色默认</Tag>,
|
||||
@@ -190,7 +191,7 @@ export default function UsersPage() {
|
||||
{
|
||||
title: '操作',
|
||||
width: 200,
|
||||
render: (_: any, record: UserInfo) => (
|
||||
render: (_: unknown, record: UserInfo) => (
|
||||
<Space>
|
||||
<Button size="small" icon={<EditOutlined />} onClick={() => handleEdit(record)}>编辑</Button>
|
||||
{canAssignPerm && (
|
||||
@@ -330,4 +331,4 @@ export default function UsersPage() {
|
||||
</Modal>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user