style(web): translate the comments in the src/views directory into English

This commit is contained in:
zhaoying
2026-02-03 18:38:04 +08:00
parent a191e32f71
commit 9e195ea63b
155 changed files with 4169 additions and 586 deletions

View File

@@ -1,3 +1,15 @@
/*
* @Author: ZhaoYing
* @Date: 2026-02-03 16:42:17
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-03 16:42:17
*/
/**
* Member Modal
* Modal for inviting new members or editing existing member roles
* Generates invitation links for new members
*/
import { forwardRef, useImperativeHandle, useState } from 'react';
import { Form, Input, Select, Modal, App } from 'antd';
import type { SelectProps } from 'antd';
@@ -12,10 +24,17 @@ const FormItem = Form.Item;
const { Option } = Select;
type LabelRender = SelectProps['labelRender'];
/**
* Component props
*/
interface MemberModalProps {
/** Callback to refresh member list */
refreshTable: () => void;
}
/**
* Modal for member invitation and editing
*/
const MemberModal = forwardRef<MemberModalRef, MemberModalProps>(({
refreshTable
}, ref) => {
@@ -36,7 +55,7 @@ const MemberModal = forwardRef<MemberModalRef, MemberModalProps>(({
]
const values: MemberModalData = Form.useWatch([], form);
// 封装取消方法,添加关闭弹窗逻辑
/** Close modal and reset form */
const handleClose = () => {
setVisible(false);
setEditingUser(null);
@@ -44,10 +63,11 @@ const MemberModal = forwardRef<MemberModalRef, MemberModalProps>(({
setLoading(false)
};
/** Open modal with optional member data for editing */
const handleOpen = (member?: Member | null) => {
if (member) {
setEditingUser(member);
// 设置表单值
// Set form values
form.setFieldsValue({
email: member.account,
role: member.role
@@ -57,7 +77,7 @@ const MemberModal = forwardRef<MemberModalRef, MemberModalProps>(({
}
setVisible(true);
};
// 封装保存方法,添加提交逻辑
/** Save member (invite or update) */
const handleSave = () => {
form
.validateFields()
@@ -100,11 +120,12 @@ const MemberModal = forwardRef<MemberModalRef, MemberModalProps>(({
});
}
// 暴露给父组件的方法
/** Expose methods to parent component */
useImperativeHandle(ref, () => ({
handleOpen,
handleClose
}));
/** Custom label renderer for role select */
const labelRender: LabelRender = (props) => {
const { label, value } = props;

View File

@@ -1,35 +1,49 @@
/*
* @Author: ZhaoYing
* @Date: 2026-02-03 16:42:12
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-03 16:42:12
*/
/**
* Member Management Page
* Manages workspace members with invite, edit, and delete functionality
*/
import React, { useRef } from 'react';
import { App, Button, Space } from 'antd';
import { useTranslation } from 'react-i18next';
import type { ColumnsType } from 'antd/es/table';
import type { AnyObject } from 'antd/es/_util/type';
import { deleteMember, memberListUrl } from '@/api/member';
import { deleteMember, memberListUrl } from '@/api/member';
import MemberModal from './components/MemberModal';
import type { Member, MemberModalRef } from './types'
import Tag from '@/components/Tag';
import Table, { type TableRef } from '@/components/Table'
import { formatDateTime } from '@/utils/format';
/**
* Member management main component
*/
const MemberManagement: React.FC = () => {
const { t } = useTranslation();
const { message, modal } = App.useApp();
const memberFormRef = useRef<MemberModalRef>(null);
const tableRef = useRef<TableRef>(null);
// 打开新增用户弹窗
/** Open member modal for create or edit */
const handleEdit = (member?: Member) => {
if (memberFormRef.current) {
memberFormRef.current.handleOpen(member);
}
}
// 刷新列表数据
/** Refresh member list */
const refreshTable = () => {
tableRef.current?.loadData()
}
// 单个删除用户
/** Delete member with confirmation */
const handleDelete = async (member: Member) => {
modal.confirm({
title: t('common.confirmDeleteDesc', { name: member.username }),
@@ -46,7 +60,7 @@ const MemberManagement: React.FC = () => {
})
};
// 表格列配置
/** Table column configuration */
const columns: ColumnsType = [
{
title: t('member.username'),

View File

@@ -1,17 +1,43 @@
// 用户数据类型
/*
* @Author: ZhaoYing
* @Date: 2026-02-03 16:42:00
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-03 16:42:00
*/
/**
* Type definitions for Member Management
*/
/**
* Member data structure
*/
export interface Member {
/** Member ID */
id: string;
/** Member username */
username: string;
/** Member account (email) */
account: string;
/** Member role */
role: string;
/** Last login timestamp */
last_login_at: string | number;
}
// 用户表单数据类型
/**
* Member invitation/edit form data
*/
export interface MemberModalData {
/** Member email address */
email: string;
/** Member role */
role: string;
}
// 定义组件暴露的方法接口
/**
* Member modal ref interface
*/
export interface MemberModalRef {
/** Open modal with optional member data for editing */
handleOpen: (user?: Member | null) => void;
}