🎨 chore(web): apply ESLint and Prettier auto-fixes (baseline)

- Ran: bun run eslint:fix && bun run lint:fix
- Inserted AGPL license header via eslint-plugin-header
- Enforced no-multiple-empty-lines and other lint rules
- Formatted code using Prettier v3 (@so1ve/prettier-config)
- No functional changes; formatting-only baseline across JS/JSX files
This commit is contained in:
t0ng7u
2025-08-30 21:15:10 +08:00
parent 105b86c660
commit 6a87808612
274 changed files with 11025 additions and 7659 deletions

View File

@@ -33,11 +33,7 @@ import {
Row,
Col,
} from '@douyinfe/semi-ui';
import {
IconSave,
IconClose,
IconUserAdd,
} from '@douyinfe/semi-icons';
import { IconSave, IconClose, IconUserAdd } from '@douyinfe/semi-icons';
import { useTranslation } from 'react-i18next';
const { Text, Title } = Typography;
@@ -80,8 +76,10 @@ const AddUserModal = (props) => {
placement={'left'}
title={
<Space>
<Tag color="green" shape="circle">{t('新建')}</Tag>
<Title heading={4} className="m-0">
<Tag color='green' shape='circle'>
{t('新建')}
</Tag>
<Title heading={4} className='m-0'>
{t('添加用户')}
</Title>
</Space>
@@ -90,10 +88,10 @@ const AddUserModal = (props) => {
visible={props.visible}
width={isMobile ? '100%' : 600}
footer={
<div className="flex justify-end bg-white">
<div className='flex justify-end bg-white'>
<Space>
<Button
theme="solid"
theme='solid'
onClick={() => formApiRef.current?.submitForm()}
icon={<IconSave />}
loading={loading}
@@ -101,8 +99,8 @@ const AddUserModal = (props) => {
{t('提交')}
</Button>
<Button
theme="light"
type="primary"
theme='light'
type='primary'
onClick={handleCancel}
icon={<IconClose />}
>
@@ -117,7 +115,7 @@ const AddUserModal = (props) => {
<Spin spinning={loading}>
<Form
initValues={getInitValues()}
getFormApi={(api) => formApiRef.current = api}
getFormApi={(api) => (formApiRef.current = api)}
onSubmit={submit}
onSubmitFail={(errs) => {
const first = Object.values(errs)[0];
@@ -125,15 +123,17 @@ const AddUserModal = (props) => {
formApiRef.current?.scrollToError();
}}
>
<div className="p-2">
<Card className="!rounded-2xl shadow-sm border-0">
<div className="flex items-center mb-2">
<Avatar size="small" color="blue" className="mr-2 shadow-md">
<div className='p-2'>
<Card className='!rounded-2xl shadow-sm border-0'>
<div className='flex items-center mb-2'>
<Avatar size='small' color='blue' className='mr-2 shadow-md'>
<IconUserAdd size={16} />
</Avatar>
<div>
<Text className="text-lg font-medium">{t('用户信息')}</Text>
<div className="text-xs text-gray-600">{t('创建新用户账户')}</div>
<Text className='text-lg font-medium'>{t('用户信息')}</Text>
<div className='text-xs text-gray-600'>
{t('创建新用户账户')}
</div>
</div>
</div>
@@ -183,4 +183,4 @@ const AddUserModal = (props) => {
);
};
export default AddUserModal;
export default AddUserModal;

View File

@@ -29,7 +29,7 @@ const DeleteUserModal = ({
activePage,
refresh,
manageUser,
t
t,
}) => {
const handleConfirm = async () => {
await manageUser(user.id, 'delete', user);
@@ -48,11 +48,11 @@ const DeleteUserModal = ({
visible={visible}
onCancel={onCancel}
onOk={handleConfirm}
type="danger"
type='danger'
>
{t('相当于删除用户,此修改将不可逆')}
</Modal>
);
};
export default DeleteUserModal;
export default DeleteUserModal;

View File

@@ -27,11 +27,11 @@ const DemoteUserModal = ({ visible, onCancel, onConfirm, user, t }) => {
visible={visible}
onCancel={onCancel}
onOk={onConfirm}
type="warning"
type='warning'
>
{t('此操作将降低用户的权限级别')}
</Modal>
);
};
export default DemoteUserModal;
export default DemoteUserModal;

View File

@@ -83,9 +83,7 @@ const EditUserModal = (props) => {
const fetchGroups = async () => {
try {
let res = await API.get(`/api/group/`);
setGroupOptions(
res.data.data.map((g) => ({ label: g, value: g }))
);
setGroupOptions(res.data.data.map((g) => ({ label: g, value: g })));
} catch (e) {
showError(e.message);
}
@@ -116,7 +114,8 @@ const EditUserModal = (props) => {
const submit = async (values) => {
setLoading(true);
let payload = { ...values };
if (typeof payload.quota === 'string') payload.quota = parseInt(payload.quota) || 0;
if (typeof payload.quota === 'string')
payload.quota = parseInt(payload.quota) || 0;
if (userId) {
payload.id = parseInt(userId);
}
@@ -194,12 +193,20 @@ const EditUserModal = (props) => {
{/* 基本信息 */}
<Card className='!rounded-2xl shadow-sm border-0'>
<div className='flex items-center mb-2'>
<Avatar size='small' color='blue' className='mr-2 shadow-md'>
<Avatar
size='small'
color='blue'
className='mr-2 shadow-md'
>
<IconUser size={16} />
</Avatar>
<div>
<Text className='text-lg font-medium'>{t('基本信息')}</Text>
<div className='text-xs text-gray-600'>{t('用户的基本账户信息')}</div>
<Text className='text-lg font-medium'>
{t('基本信息')}
</Text>
<div className='text-xs text-gray-600'>
{t('用户的基本账户信息')}
</div>
</div>
</div>
@@ -248,12 +255,20 @@ const EditUserModal = (props) => {
{userId && (
<Card className='!rounded-2xl shadow-sm border-0'>
<div className='flex items-center mb-2'>
<Avatar size='small' color='green' className='mr-2 shadow-md'>
<Avatar
size='small'
color='green'
className='mr-2 shadow-md'
>
<IconUserGroup size={16} />
</Avatar>
<div>
<Text className='text-lg font-medium'>{t('权限设置')}</Text>
<div className='text-xs text-gray-600'>{t('用户分组和额度管理')}</div>
<Text className='text-lg font-medium'>
{t('权限设置')}
</Text>
<div className='text-xs text-gray-600'>
{t('用户分组和额度管理')}
</div>
</div>
</div>
@@ -297,23 +312,41 @@ const EditUserModal = (props) => {
{/* 绑定信息 */}
<Card className='!rounded-2xl shadow-sm border-0'>
<div className='flex items-center mb-2'>
<Avatar size='small' color='purple' className='mr-2 shadow-md'>
<Avatar
size='small'
color='purple'
className='mr-2 shadow-md'
>
<IconLink size={16} />
</Avatar>
<div>
<Text className='text-lg font-medium'>{t('绑定信息')}</Text>
<div className='text-xs text-gray-600'>{t('第三方账户绑定状态(只读)')}</div>
<Text className='text-lg font-medium'>
{t('绑定信息')}
</Text>
<div className='text-xs text-gray-600'>
{t('第三方账户绑定状态(只读)')}
</div>
</div>
</div>
<Row gutter={12}>
{['github_id', 'oidc_id', 'wechat_id', 'email', 'telegram_id'].map((field) => (
{[
'github_id',
'oidc_id',
'wechat_id',
'email',
'telegram_id',
].map((field) => (
<Col span={24} key={field}>
<Form.Input
field={field}
label={t(`已绑定的 ${field.replace('_id', '').toUpperCase()} 账户`)}
label={t(
`已绑定的 ${field.replace('_id', '').toUpperCase()} 账户`,
)}
readonly
placeholder={t('此项只读,需要用户通过个人设置页面的相关绑定按钮进行绑定,不可直接修改')}
placeholder={t(
'此项只读,需要用户通过个人设置页面的相关绑定按钮进行绑定,不可直接修改',
)}
/>
</Col>
))}
@@ -343,16 +376,14 @@ const EditUserModal = (props) => {
}
>
<div className='mb-4'>
{
(() => {
const current = formApiRef.current?.getValue('quota') || 0;
return (
<Text type='secondary' className='block mb-2'>
{`${t('新额度:')}${renderQuota(current)} + ${renderQuota(addQuotaLocal)} = ${renderQuota(current + parseInt(addQuotaLocal || 0))}`}
</Text>
);
})()
}
{(() => {
const current = formApiRef.current?.getValue('quota') || 0;
return (
<Text type='secondary' className='block mb-2'>
{`${t('新额度:')}${renderQuota(current)} + ${renderQuota(addQuotaLocal)} = ${renderQuota(current + parseInt(addQuotaLocal || 0))}`}
</Text>
);
})()}
</div>
<InputNumber
placeholder={t('需要添加的额度(支持负数)')}
@@ -367,4 +398,4 @@ const EditUserModal = (props) => {
);
};
export default EditUserModal;
export default EditUserModal;

View File

@@ -26,7 +26,7 @@ const EnableDisableUserModal = ({
onConfirm,
user,
action,
t
t,
}) => {
const isDisable = action === 'disable';
@@ -36,11 +36,11 @@ const EnableDisableUserModal = ({
visible={visible}
onCancel={onCancel}
onOk={onConfirm}
type="warning"
type='warning'
>
{isDisable ? t('此操作将禁用用户账户') : t('此操作将启用用户账户')}
</Modal>
);
};
export default EnableDisableUserModal;
export default EnableDisableUserModal;

View File

@@ -27,11 +27,11 @@ const PromoteUserModal = ({ visible, onCancel, onConfirm, user, t }) => {
visible={visible}
onCancel={onCancel}
onOk={onConfirm}
type="warning"
type='warning'
>
{t('此操作将提升用户的权限级别')}
</Modal>
);
};
export default PromoteUserModal;
export default PromoteUserModal;