|
|
@@ -0,0 +1,551 @@
|
|
|
+import React, { useState, useEffect } from 'react';
|
|
|
+import {
|
|
|
+ Table,
|
|
|
+ Card,
|
|
|
+ Space,
|
|
|
+ Button,
|
|
|
+ Input,
|
|
|
+ Select,
|
|
|
+ Tag,
|
|
|
+ Modal,
|
|
|
+ Form,
|
|
|
+ message,
|
|
|
+ Descriptions,
|
|
|
+ Statistic,
|
|
|
+ Row,
|
|
|
+ Col,
|
|
|
+ Avatar,
|
|
|
+ Image,
|
|
|
+ Tooltip
|
|
|
+} from 'antd';
|
|
|
+import {
|
|
|
+ SearchOutlined,
|
|
|
+ EyeOutlined,
|
|
|
+ EditOutlined,
|
|
|
+ CheckCircleOutlined,
|
|
|
+ CloseCircleOutlined,
|
|
|
+ UserOutlined,
|
|
|
+ TeamOutlined,
|
|
|
+ BarChartOutlined
|
|
|
+} from '@ant-design/icons';
|
|
|
+import { SilverTalentAdminService } from '@/server/modules/silver-users/silver-talent-admin.service';
|
|
|
+import { AppDataSource } from '@/server/data-source';
|
|
|
+import { CertificationStatus, JobSeekingStatus, Gender } from '@/server/modules/silver-users/silver-user-profile.entity';
|
|
|
+
|
|
|
+const { Option } = Select;
|
|
|
+const { TextArea } = Input;
|
|
|
+
|
|
|
+// 认证状态显示
|
|
|
+const getCertificationStatusText = (status: CertificationStatus) => {
|
|
|
+ switch (status) {
|
|
|
+ case CertificationStatus.UNCERTIFIED: return '未认证';
|
|
|
+ case CertificationStatus.PENDING: return '认证中';
|
|
|
+ case CertificationStatus.CERTIFIED: return '已认证';
|
|
|
+ case CertificationStatus.REJECTED: return '已拒绝';
|
|
|
+ default: return '未知';
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+const getCertificationStatusColor = (status: CertificationStatus) => {
|
|
|
+ switch (status) {
|
|
|
+ case CertificationStatus.UNCERTIFIED: return 'default';
|
|
|
+ case CertificationStatus.PENDING: return 'processing';
|
|
|
+ case CertificationStatus.CERTIFIED: return 'success';
|
|
|
+ case CertificationStatus.REJECTED: return 'error';
|
|
|
+ default: return 'default';
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 求职状态显示
|
|
|
+const getJobSeekingStatusText = (status: JobSeekingStatus) => {
|
|
|
+ switch (status) {
|
|
|
+ case JobSeekingStatus.NOT_SEEKING: return '未求职';
|
|
|
+ case JobSeekingStatus.ACTIVELY_SEEKING: return '积极求职';
|
|
|
+ case JobSeekingStatus.OPEN_TO_OPPORTUNITIES: return '观望机会';
|
|
|
+ default: return '未知';
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 性别显示
|
|
|
+const getGenderText = (gender: Gender) => {
|
|
|
+ switch (gender) {
|
|
|
+ case Gender.MALE: return '男';
|
|
|
+ case Gender.FEMALE: return '女';
|
|
|
+ case Gender.OTHER: return '其他';
|
|
|
+ default: return '未知';
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+interface SilverTalent {
|
|
|
+ id: number;
|
|
|
+ realName: string;
|
|
|
+ age: number;
|
|
|
+ gender: Gender;
|
|
|
+ organization?: string;
|
|
|
+ phone: string;
|
|
|
+ email?: string;
|
|
|
+ avatarUrl?: string;
|
|
|
+ certificationStatus: CertificationStatus;
|
|
|
+ jobSeekingStatus: JobSeekingStatus;
|
|
|
+ totalPoints: number;
|
|
|
+ knowledgeRankingScore: number;
|
|
|
+ personalIntro?: string;
|
|
|
+ personalSkills?: string;
|
|
|
+ createdAt: string;
|
|
|
+}
|
|
|
+
|
|
|
+export const SilverTalentsPage: React.FC = () => {
|
|
|
+ const [loading, setLoading] = useState(false);
|
|
|
+ const [data, setData] = useState<SilverTalent[]>([]);
|
|
|
+ const [total, setTotal] = useState(0);
|
|
|
+ const [current, setCurrent] = useState(1);
|
|
|
+ const [pageSize, setPageSize] = useState(20);
|
|
|
+ const [searchParams, setSearchParams] = useState({
|
|
|
+ keyword: '',
|
|
|
+ certificationStatus: undefined as CertificationStatus | undefined,
|
|
|
+ jobSeekingStatus: undefined as JobSeekingStatus | undefined,
|
|
|
+ ageMin: undefined as number | undefined,
|
|
|
+ ageMax: undefined as number | undefined,
|
|
|
+ });
|
|
|
+ const [stats, setStats] = useState<any>(null);
|
|
|
+ const [selectedTalent, setSelectedTalent] = useState<SilverTalent | null>(null);
|
|
|
+ const [detailModalVisible, setDetailModalVisible] = useState(false);
|
|
|
+ const [editModalVisible, setEditModalVisible] = useState(false);
|
|
|
+ const [certModalVisible, setCertModalVisible] = useState(false);
|
|
|
+ const [editForm] = Form.useForm();
|
|
|
+ const [certForm] = Form.useForm();
|
|
|
+
|
|
|
+ // 列配置
|
|
|
+ const columns = [
|
|
|
+ {
|
|
|
+ title: '头像',
|
|
|
+ dataIndex: 'avatarUrl',
|
|
|
+ key: 'avatarUrl',
|
|
|
+ width: 80,
|
|
|
+ render: (url: string) => (
|
|
|
+ <Avatar
|
|
|
+ size={48}
|
|
|
+ src={url}
|
|
|
+ icon={<UserOutlined />}
|
|
|
+ style={{ backgroundColor: '#87d068' }}
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '姓名',
|
|
|
+ dataIndex: 'realName',
|
|
|
+ key: 'realName',
|
|
|
+ sorter: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '年龄',
|
|
|
+ dataIndex: 'age',
|
|
|
+ key: 'age',
|
|
|
+ width: 80,
|
|
|
+ sorter: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '性别',
|
|
|
+ dataIndex: 'gender',
|
|
|
+ key: 'gender',
|
|
|
+ width: 80,
|
|
|
+ render: (gender: Gender) => getGenderText(gender),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '所属机构',
|
|
|
+ dataIndex: 'organization',
|
|
|
+ key: 'organization',
|
|
|
+ ellipsis: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '认证状态',
|
|
|
+ dataIndex: 'certificationStatus',
|
|
|
+ key: 'certificationStatus',
|
|
|
+ width: 100,
|
|
|
+ render: (status: CertificationStatus) => (
|
|
|
+ <Tag color={getCertificationStatusColor(status)}>
|
|
|
+ {getCertificationStatusText(status)}
|
|
|
+ </Tag>
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '求职状态',
|
|
|
+ dataIndex: 'jobSeekingStatus',
|
|
|
+ key: 'jobSeekingStatus',
|
|
|
+ width: 100,
|
|
|
+ render: (status: JobSeekingStatus) => (
|
|
|
+ <Tag>
|
|
|
+ {getJobSeekingStatusText(status)}
|
|
|
+ </Tag>
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '积分',
|
|
|
+ dataIndex: 'totalPoints',
|
|
|
+ key: 'totalPoints',
|
|
|
+ width: 100,
|
|
|
+ sorter: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '知识排名',
|
|
|
+ dataIndex: 'knowledgeRankingScore',
|
|
|
+ key: 'knowledgeRankingScore',
|
|
|
+ width: 100,
|
|
|
+ sorter: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '创建时间',
|
|
|
+ dataIndex: 'createdAt',
|
|
|
+ key: 'createdAt',
|
|
|
+ width: 180,
|
|
|
+ render: (date: string) => new Date(date).toLocaleDateString(),
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '操作',
|
|
|
+ key: 'action',
|
|
|
+ width: 200,
|
|
|
+ fixed: 'right' as const,
|
|
|
+ render: (_, record: SilverTalent) => (
|
|
|
+ <Space>
|
|
|
+ <Button
|
|
|
+ type="link"
|
|
|
+ icon={<EyeOutlined />}
|
|
|
+ onClick={() => handleViewDetail(record)}
|
|
|
+ >
|
|
|
+ 详情
|
|
|
+ </Button>
|
|
|
+ <Button
|
|
|
+ type="link"
|
|
|
+ icon={<EditOutlined />}
|
|
|
+ onClick={() => handleEdit(record)}
|
|
|
+ >
|
|
|
+ 编辑
|
|
|
+ </Button>
|
|
|
+ <Button
|
|
|
+ type="link"
|
|
|
+ icon={<CheckCircleOutlined />}
|
|
|
+ onClick={() => handleCertification(record)}
|
|
|
+ >
|
|
|
+ 认证
|
|
|
+ </Button>
|
|
|
+ </Space>
|
|
|
+ ),
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ // 获取列表数据
|
|
|
+ const fetchData = async () => {
|
|
|
+ setLoading(true);
|
|
|
+ try {
|
|
|
+ // 模拟API调用,实际使用时替换为真实API
|
|
|
+ const service = new SilverTalentAdminService(AppDataSource);
|
|
|
+ const [talents, totalCount, statsData] = await service.findForAdmin({
|
|
|
+ ...searchParams,
|
|
|
+ page: current,
|
|
|
+ pageSize,
|
|
|
+ });
|
|
|
+
|
|
|
+ setData(talents);
|
|
|
+ setTotal(totalCount);
|
|
|
+ setStats(statsData);
|
|
|
+ } catch (error) {
|
|
|
+ message.error('获取数据失败');
|
|
|
+ } finally {
|
|
|
+ setLoading(false);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 获取统计数据
|
|
|
+ const fetchStats = async () => {
|
|
|
+ try {
|
|
|
+ const service = new SilverTalentAdminService(AppDataSource);
|
|
|
+ const statsData = await service.getAdminStats();
|
|
|
+ setStats(statsData);
|
|
|
+ } catch (error) {
|
|
|
+ console.error('获取统计数据失败:', error);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ fetchData();
|
|
|
+ fetchStats();
|
|
|
+ }, [current, pageSize, searchParams]);
|
|
|
+
|
|
|
+ // 处理搜索
|
|
|
+ const handleSearch = (values: any) => {
|
|
|
+ setSearchParams(values);
|
|
|
+ setCurrent(1);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理重置
|
|
|
+ const handleReset = () => {
|
|
|
+ setSearchParams({
|
|
|
+ keyword: '',
|
|
|
+ certificationStatus: undefined,
|
|
|
+ jobSeekingStatus: undefined,
|
|
|
+ ageMin: undefined,
|
|
|
+ ageMax: undefined,
|
|
|
+ });
|
|
|
+ setCurrent(1);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理查看详情
|
|
|
+ const handleViewDetail = (record: SilverTalent) => {
|
|
|
+ setSelectedTalent(record);
|
|
|
+ setDetailModalVisible(true);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理编辑
|
|
|
+ const handleEdit = (record: SilverTalent) => {
|
|
|
+ setSelectedTalent(record);
|
|
|
+ editForm.setFieldsValue(record);
|
|
|
+ setEditModalVisible(true);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理认证
|
|
|
+ const handleCertification = (record: SilverTalent) => {
|
|
|
+ setSelectedTalent(record);
|
|
|
+ certForm.setFieldsValue({
|
|
|
+ certificationStatus: record.certificationStatus,
|
|
|
+ certificationInfo: record.certificationInfo || '',
|
|
|
+ });
|
|
|
+ setCertModalVisible(true);
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理编辑提交
|
|
|
+ const handleEditSubmit = async (values: any) => {
|
|
|
+ if (!selectedTalent) return;
|
|
|
+
|
|
|
+ try {
|
|
|
+ const service = new SilverTalentAdminService(AppDataSource);
|
|
|
+ await service.updateByAdmin(selectedTalent.id, values, 1); // 假设当前用户ID为1
|
|
|
+
|
|
|
+ message.success('更新成功');
|
|
|
+ setEditModalVisible(false);
|
|
|
+ fetchData();
|
|
|
+ } catch (error) {
|
|
|
+ message.error('更新失败');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 处理认证提交
|
|
|
+ const handleCertSubmit = async (values: any) => {
|
|
|
+ if (!selectedTalent) return;
|
|
|
+
|
|
|
+ try {
|
|
|
+ const service = new SilverTalentAdminService(AppDataSource);
|
|
|
+ await service.updateCertificationStatus(
|
|
|
+ selectedTalent.id,
|
|
|
+ values.certificationStatus,
|
|
|
+ values.certificationInfo,
|
|
|
+ 1 // 假设当前用户ID为1
|
|
|
+ );
|
|
|
+
|
|
|
+ message.success('认证状态更新成功');
|
|
|
+ setCertModalVisible(false);
|
|
|
+ fetchData();
|
|
|
+ } catch (error) {
|
|
|
+ message.error('认证状态更新失败');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div style={{ padding: 24 }}>
|
|
|
+ {/* 统计卡片 */}
|
|
|
+ <Row gutter={24} style={{ marginBottom: 24 }}>
|
|
|
+ <Col span={6}>
|
|
|
+ <Card>
|
|
|
+ <Statistic
|
|
|
+ title="总人才数"
|
|
|
+ value={stats?.totalCount || 0}
|
|
|
+ prefix={<TeamOutlined />}
|
|
|
+ />
|
|
|
+ </Card>
|
|
|
+ </Col>
|
|
|
+ <Col span={6}>
|
|
|
+ <Card>
|
|
|
+ <Statistic
|
|
|
+ title="已认证"
|
|
|
+ value={stats?.certifiedCount || 0}
|
|
|
+ prefix={<CheckCircleOutlined style={{ color: '#52c41a' }} />}
|
|
|
+ />
|
|
|
+ </Card>
|
|
|
+ </Col>
|
|
|
+ <Col span={6}>
|
|
|
+ <Card>
|
|
|
+ <Statistic
|
|
|
+ title="认证中"
|
|
|
+ value={stats?.pendingCount || 0}
|
|
|
+ prefix={<BarChartOutlined style={{ color: '#1890ff' }} />}
|
|
|
+ />
|
|
|
+ </Card>
|
|
|
+ </Col>
|
|
|
+ <Col span={6}>
|
|
|
+ <Card>
|
|
|
+ <Statistic
|
|
|
+ title="未认证"
|
|
|
+ value={stats?.unCertifiedCount || 0}
|
|
|
+ prefix={<CloseCircleOutlined style={{ color: '#ff4d4f' }} />}
|
|
|
+ />
|
|
|
+ </Card>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+
|
|
|
+ {/* 搜索表单 */}
|
|
|
+ <Card style={{ marginBottom: 24 }}>
|
|
|
+ <Form layout="inline" onFinish={handleSearch}>
|
|
|
+ <Form.Item name="keyword" label="关键词">
|
|
|
+ <Input placeholder="姓名/机构/技能" prefix={<SearchOutlined />} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="certificationStatus" label="认证状态">
|
|
|
+ <Select style={{ width: 120 }} allowClear>
|
|
|
+ <Option value={CertificationStatus.UNCERTIFIED}>未认证</Option>
|
|
|
+ <Option value={CertificationStatus.PENDING}>认证中</Option>
|
|
|
+ <Option value={CertificationStatus.CERTIFIED}>已认证</Option>
|
|
|
+ <Option value={CertificationStatus.REJECTED}>已拒绝</Option>
|
|
|
+ </Select>
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="jobSeekingStatus" label="求职状态">
|
|
|
+ <Select style={{ width: 120 }} allowClear>
|
|
|
+ <Option value={JobSeekingStatus.NOT_SEEKING}>未求职</Option>
|
|
|
+ <Option value={JobSeekingStatus.ACTIVELY_SEEKING}>积极求职</Option>
|
|
|
+ <Option value={JobSeekingStatus.OPEN_TO_OPPORTUNITIES}>观望机会</Option>
|
|
|
+ </Select>
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item>
|
|
|
+ <Space>
|
|
|
+ <Button type="primary" htmlType="submit">搜索</Button>
|
|
|
+ <Button onClick={handleReset}>重置</Button>
|
|
|
+ </Space>
|
|
|
+ </Form.Item>
|
|
|
+ </Form>
|
|
|
+ </Card>
|
|
|
+
|
|
|
+ {/* 数据表格 */}
|
|
|
+ <Card>
|
|
|
+ <Table
|
|
|
+ columns={columns}
|
|
|
+ dataSource={data}
|
|
|
+ loading={loading}
|
|
|
+ rowKey="id"
|
|
|
+ pagination={{
|
|
|
+ current,
|
|
|
+ pageSize,
|
|
|
+ total,
|
|
|
+ showSizeChanger: true,
|
|
|
+ showQuickJumper: true,
|
|
|
+ showTotal: (total, range) => `第 ${range[0]}-${range[1]} 条/共 ${total} 条`,
|
|
|
+ onChange: (page, size) => {
|
|
|
+ setCurrent(page);
|
|
|
+ setPageSize(size);
|
|
|
+ },
|
|
|
+ }}
|
|
|
+ scroll={{ x: 'max-content' }}
|
|
|
+ />
|
|
|
+ </Card>
|
|
|
+
|
|
|
+ {/* 详情弹窗 */}
|
|
|
+ <Modal
|
|
|
+ title="人才详情"
|
|
|
+ width={800}
|
|
|
+ open={detailModalVisible}
|
|
|
+ onCancel={() => setDetailModalVisible(false)}
|
|
|
+ footer={[
|
|
|
+ <Button key="close" onClick={() => setDetailModalVisible(false)}>
|
|
|
+ 关闭
|
|
|
+ </Button>,
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ {selectedTalent && (
|
|
|
+ <Descriptions bordered column={2}>
|
|
|
+ <Descriptions.Item label="姓名">{selectedTalent.realName}</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="年龄">{selectedTalent.age}岁</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="性别">{getGenderText(selectedTalent.gender)}</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="所属机构">{selectedTalent.organization || '-'}</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="联系电话">{selectedTalent.phone}</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="邮箱">{selectedTalent.email || '-'}</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="认证状态">
|
|
|
+ <Tag color={getCertificationStatusColor(selectedTalent.certificationStatus)}>
|
|
|
+ {getCertificationStatusText(selectedTalent.certificationStatus)}
|
|
|
+ </Tag>
|
|
|
+ </Descriptions.Item>
|
|
|
+ <Descriptions.Item label="求职状态">
|
|
|
+ {getJobSeekingStatusText(selectedTalent.jobSeekingStatus)}
|
|
|
+ </Descriptions.Item>
|
|
|
+ <Descriptions.Item label="积分">{selectedTalent.totalPoints}</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="知识排名分">{selectedTalent.knowledgeRankingScore}</Descriptions.Item>
|
|
|
+ <Descriptions.Item label="个人简介" span={2}>
|
|
|
+ {selectedTalent.personalIntro || '-'}
|
|
|
+ </Descriptions.Item>
|
|
|
+ <Descriptions.Item label="个人技能" span={2}>
|
|
|
+ {selectedTalent.personalSkills || '-'}
|
|
|
+ </Descriptions.Item>
|
|
|
+ </Descriptions>
|
|
|
+ )}
|
|
|
+ </Modal>
|
|
|
+
|
|
|
+ {/* 编辑弹窗 */}
|
|
|
+ <Modal
|
|
|
+ title="编辑人才信息"
|
|
|
+ width={600}
|
|
|
+ open={editModalVisible}
|
|
|
+ onCancel={() => setEditModalVisible(false)}
|
|
|
+ onOk={() => editForm.submit()}
|
|
|
+ >
|
|
|
+ <Form form={editForm} onFinish={handleEditSubmit} layout="vertical">
|
|
|
+ <Form.Item name="realName" label="真实姓名" rules={[{ required: true }]}>
|
|
|
+ <Input />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="age" label="年龄" rules={[{ required: true }]}>
|
|
|
+ <Input type="number" min={50} max={100} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="gender" label="性别" rules={[{ required: true }]}>
|
|
|
+ <Select>
|
|
|
+ <Option value={Gender.MALE}>男</Option>
|
|
|
+ <Option value={Gender.FEMALE}>女</Option>
|
|
|
+ <Option value={Gender.OTHER}>其他</Option>
|
|
|
+ </Select>
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="organization" label="所属机构">
|
|
|
+ <Input />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="phone" label="联系电话" rules={[{ required: true }]}>
|
|
|
+ <Input />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="email" label="邮箱">
|
|
|
+ <Input />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="personalIntro" label="个人简介">
|
|
|
+ <TextArea rows={3} />
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="personalSkills" label="个人技能">
|
|
|
+ <TextArea rows={3} />
|
|
|
+ </Form.Item>
|
|
|
+ </Form>
|
|
|
+ </Modal>
|
|
|
+
|
|
|
+ {/* 认证弹窗 */}
|
|
|
+ <Modal
|
|
|
+ title="更新认证状态"
|
|
|
+ width={500}
|
|
|
+ open={certModalVisible}
|
|
|
+ onCancel={() => setCertModalVisible(false)}
|
|
|
+ onOk={() => certForm.submit()}
|
|
|
+ >
|
|
|
+ <Form form={certForm} onFinish={handleCertSubmit} layout="vertical">
|
|
|
+ <Form.Item name="certificationStatus" label="认证状态" rules={[{ required: true }]}>
|
|
|
+ <Select>
|
|
|
+ <Option value={CertificationStatus.UNCERTIFIED}>未认证</Option>
|
|
|
+ <Option value={CertificationStatus.PENDING}>认证中</Option>
|
|
|
+ <Option value={CertificationStatus.CERTIFIED}>已认证</Option>
|
|
|
+ <Option value={CertificationStatus.REJECTED}>已拒绝</Option>
|
|
|
+ </Select>
|
|
|
+ </Form.Item>
|
|
|
+ <Form.Item name="certificationInfo" label="认证信息">
|
|
|
+ <TextArea rows={4} placeholder="请输入认证信息或拒绝理由" />
|
|
|
+ </Form.Item>
|
|
|
+ </Form>
|
|
|
+ </Modal>
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+};
|