|
@@ -106,7 +106,11 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
size={48}
|
|
size={48}
|
|
|
src={url}
|
|
src={url}
|
|
|
icon={<UserOutlined />}
|
|
icon={<UserOutlined />}
|
|
|
- style={{ backgroundColor: '#87d068' }}
|
|
|
|
|
|
|
+ style={{
|
|
|
|
|
+ backgroundColor: 'rgba(139, 115, 85, 0.2)',
|
|
|
|
|
+ border: '2px solid rgba(139, 115, 85, 0.3)',
|
|
|
|
|
+ borderRadius: '50%'
|
|
|
|
|
+ }}
|
|
|
/>
|
|
/>
|
|
|
),
|
|
),
|
|
|
},
|
|
},
|
|
@@ -115,6 +119,9 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
dataIndex: 'realName',
|
|
dataIndex: 'realName',
|
|
|
key: 'realName',
|
|
key: 'realName',
|
|
|
sorter: true,
|
|
sorter: true,
|
|
|
|
|
+ render: (text: string) => (
|
|
|
|
|
+ <span style={{ color: '#2f1f0f', fontWeight: 500 }}>{text}</span>
|
|
|
|
|
+ ),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
title: '年龄',
|
|
title: '年龄',
|
|
@@ -122,19 +129,27 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
key: 'age',
|
|
key: 'age',
|
|
|
width: 80,
|
|
width: 80,
|
|
|
sorter: true,
|
|
sorter: true,
|
|
|
|
|
+ render: (age: number) => (
|
|
|
|
|
+ <span style={{ color: '#8b7355' }}>{age}岁</span>
|
|
|
|
|
+ ),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
title: '性别',
|
|
title: '性别',
|
|
|
dataIndex: 'gender',
|
|
dataIndex: 'gender',
|
|
|
key: 'gender',
|
|
key: 'gender',
|
|
|
width: 80,
|
|
width: 80,
|
|
|
- render: (gender: number) => getGenderText(gender),
|
|
|
|
|
|
|
+ render: (gender: number) => (
|
|
|
|
|
+ <span style={{ color: '#8b7355' }}>{getGenderText(gender)}</span>
|
|
|
|
|
+ ),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
title: '所属机构',
|
|
title: '所属机构',
|
|
|
dataIndex: 'organization',
|
|
dataIndex: 'organization',
|
|
|
key: 'organization',
|
|
key: 'organization',
|
|
|
ellipsis: true,
|
|
ellipsis: true,
|
|
|
|
|
+ render: (text: string) => (
|
|
|
|
|
+ <span style={{ color: '#8b7355' }}>{text || '-'}</span>
|
|
|
|
|
+ ),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
title: '认证状态',
|
|
title: '认证状态',
|
|
@@ -142,7 +157,18 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
key: 'certificationStatus',
|
|
key: 'certificationStatus',
|
|
|
width: 100,
|
|
width: 100,
|
|
|
render: (status: number) => (
|
|
render: (status: number) => (
|
|
|
- <Tag color={getCertificationStatusColor(status)}>
|
|
|
|
|
|
|
+ <Tag
|
|
|
|
|
+ color={getCertificationStatusColor(status)}
|
|
|
|
|
+ style={{
|
|
|
|
|
+ borderRadius: '12px',
|
|
|
|
|
+ padding: '4px 8px',
|
|
|
|
|
+ fontSize: '12px',
|
|
|
|
|
+ backgroundColor: status === 2 ? 'rgba(92, 124, 92, 0.1)' :
|
|
|
|
|
+ status === 3 ? 'rgba(168, 92, 92, 0.1)' :
|
|
|
|
|
+ status === 1 ? 'rgba(74, 107, 124, 0.1)' :
|
|
|
|
|
+ 'rgba(139, 115, 85, 0.1)'
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
{getCertificationStatusText(status)}
|
|
{getCertificationStatusText(status)}
|
|
|
</Tag>
|
|
</Tag>
|
|
|
),
|
|
),
|
|
@@ -153,7 +179,13 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
key: 'jobSeekingStatus',
|
|
key: 'jobSeekingStatus',
|
|
|
width: 100,
|
|
width: 100,
|
|
|
render: (status: number) => (
|
|
render: (status: number) => (
|
|
|
- <Tag>
|
|
|
|
|
|
|
+ <Tag style={{
|
|
|
|
|
+ borderRadius: '12px',
|
|
|
|
|
+ padding: '4px 8px',
|
|
|
|
|
+ fontSize: '12px',
|
|
|
|
|
+ backgroundColor: 'rgba(139, 115, 85, 0.1)',
|
|
|
|
|
+ color: '#8b7355'
|
|
|
|
|
+ }}>
|
|
|
{getJobSeekingStatusText(status)}
|
|
{getJobSeekingStatusText(status)}
|
|
|
</Tag>
|
|
</Tag>
|
|
|
),
|
|
),
|
|
@@ -164,6 +196,9 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
key: 'totalPoints',
|
|
key: 'totalPoints',
|
|
|
width: 100,
|
|
width: 100,
|
|
|
sorter: true,
|
|
sorter: true,
|
|
|
|
|
+ render: (points: number) => (
|
|
|
|
|
+ <span style={{ color: '#5c7c5c', fontWeight: 600 }}>{points}</span>
|
|
|
|
|
+ ),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
title: '知识排名',
|
|
title: '知识排名',
|
|
@@ -171,39 +206,85 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
key: 'knowledgeRankingScore',
|
|
key: 'knowledgeRankingScore',
|
|
|
width: 100,
|
|
width: 100,
|
|
|
sorter: true,
|
|
sorter: true,
|
|
|
|
|
+ render: (score: number) => (
|
|
|
|
|
+ <span style={{ color: '#4a6b7c', fontWeight: 600 }}>{score}</span>
|
|
|
|
|
+ ),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
title: '创建时间',
|
|
title: '创建时间',
|
|
|
dataIndex: 'createdAt',
|
|
dataIndex: 'createdAt',
|
|
|
key: 'createdAt',
|
|
key: 'createdAt',
|
|
|
width: 180,
|
|
width: 180,
|
|
|
- render: (date: string) => new Date(date).toLocaleDateString(),
|
|
|
|
|
|
|
+ render: (date: string) => (
|
|
|
|
|
+ <span style={{ color: '#8b7355', fontSize: '12px' }}>
|
|
|
|
|
+ {new Date(date).toLocaleDateString()}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ ),
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
title: '操作',
|
|
title: '操作',
|
|
|
key: 'action',
|
|
key: 'action',
|
|
|
- width: 200,
|
|
|
|
|
|
|
+ width: 220,
|
|
|
fixed: 'right' as const,
|
|
fixed: 'right' as const,
|
|
|
render: (_: any, record: SilverTalent) => (
|
|
render: (_: any, record: SilverTalent) => (
|
|
|
- <Space>
|
|
|
|
|
|
|
+ <Space size="small">
|
|
|
<Button
|
|
<Button
|
|
|
- type="link"
|
|
|
|
|
|
|
+ type="text"
|
|
|
icon={<EyeOutlined />}
|
|
icon={<EyeOutlined />}
|
|
|
onClick={() => handleViewDetail(record)}
|
|
onClick={() => handleViewDetail(record)}
|
|
|
|
|
+ style={{
|
|
|
|
|
+ color: '#4a6b7c',
|
|
|
|
|
+ border: '1px solid rgba(74, 107, 124, 0.3)',
|
|
|
|
|
+ borderRadius: '16px',
|
|
|
|
|
+ padding: '4px 12px',
|
|
|
|
|
+ fontSize: '12px'
|
|
|
|
|
+ }}
|
|
|
|
|
+ onMouseEnter={(e) => {
|
|
|
|
|
+ e.currentTarget.style.backgroundColor = 'rgba(74, 107, 124, 0.1)';
|
|
|
|
|
+ }}
|
|
|
|
|
+ onMouseLeave={(e) => {
|
|
|
|
|
+ e.currentTarget.style.backgroundColor = 'transparent';
|
|
|
|
|
+ }}
|
|
|
>
|
|
>
|
|
|
详情
|
|
详情
|
|
|
</Button>
|
|
</Button>
|
|
|
<Button
|
|
<Button
|
|
|
- type="link"
|
|
|
|
|
|
|
+ type="text"
|
|
|
icon={<EditOutlined />}
|
|
icon={<EditOutlined />}
|
|
|
onClick={() => handleEdit(record)}
|
|
onClick={() => handleEdit(record)}
|
|
|
|
|
+ style={{
|
|
|
|
|
+ color: '#8b7355',
|
|
|
|
|
+ border: '1px solid rgba(139, 115, 85, 0.3)',
|
|
|
|
|
+ borderRadius: '16px',
|
|
|
|
|
+ padding: '4px 12px',
|
|
|
|
|
+ fontSize: '12px'
|
|
|
|
|
+ }}
|
|
|
|
|
+ onMouseEnter={(e) => {
|
|
|
|
|
+ e.currentTarget.style.backgroundColor = 'rgba(139, 115, 85, 0.1)';
|
|
|
|
|
+ }}
|
|
|
|
|
+ onMouseLeave={(e) => {
|
|
|
|
|
+ e.currentTarget.style.backgroundColor = 'transparent';
|
|
|
|
|
+ }}
|
|
|
>
|
|
>
|
|
|
编辑
|
|
编辑
|
|
|
</Button>
|
|
</Button>
|
|
|
<Button
|
|
<Button
|
|
|
- type="link"
|
|
|
|
|
|
|
+ type="text"
|
|
|
icon={<CheckCircleOutlined />}
|
|
icon={<CheckCircleOutlined />}
|
|
|
onClick={() => handleCertification(record)}
|
|
onClick={() => handleCertification(record)}
|
|
|
|
|
+ style={{
|
|
|
|
|
+ color: '#5c7c5c',
|
|
|
|
|
+ border: '1px solid rgba(92, 124, 92, 0.3)',
|
|
|
|
|
+ borderRadius: '16px',
|
|
|
|
|
+ padding: '4px 12px',
|
|
|
|
|
+ fontSize: '12px'
|
|
|
|
|
+ }}
|
|
|
|
|
+ onMouseEnter={(e) => {
|
|
|
|
|
+ e.currentTarget.style.backgroundColor = 'rgba(92, 124, 92, 0.1)';
|
|
|
|
|
+ }}
|
|
|
|
|
+ onMouseLeave={(e) => {
|
|
|
|
|
+ e.currentTarget.style.backgroundColor = 'transparent';
|
|
|
|
|
+ }}
|
|
|
>
|
|
>
|
|
|
认证
|
|
认证
|
|
|
</Button>
|
|
</Button>
|
|
@@ -352,63 +433,76 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
- <div style={{ padding: 24 }}>
|
|
|
|
|
|
|
+ <div style={{
|
|
|
|
|
+ padding: 24,
|
|
|
|
|
+ backgroundColor: '#f5f3f0',
|
|
|
|
|
+ minHeight: '100vh'
|
|
|
|
|
+ }}>
|
|
|
|
|
+
|
|
|
{/* 统计卡片 */}
|
|
{/* 统计卡片 */}
|
|
|
- <Row gutter={24} style={{ marginBottom: 24 }}>
|
|
|
|
|
|
|
+ <Row gutter={24} style={{ marginBottom: 32 }}>
|
|
|
<Col span={6}>
|
|
<Col span={6}>
|
|
|
- <Card>
|
|
|
|
|
|
|
+ <div className="stat-card">
|
|
|
<Statistic
|
|
<Statistic
|
|
|
- title="总人才数"
|
|
|
|
|
|
|
+ title={<span style={{ color: '#2f1f0f', fontSize: '16px', fontWeight: 500 }}>总人才数</span>}
|
|
|
value={stats?.totalCount || 0}
|
|
value={stats?.totalCount || 0}
|
|
|
- prefix={<TeamOutlined />}
|
|
|
|
|
|
|
+ valueStyle={{ color: '#3a2f26', fontSize: '28px', fontWeight: 'bold' }}
|
|
|
|
|
+ prefix={<TeamOutlined style={{ color: '#8b7355', fontSize: '24px' }} />}
|
|
|
/>
|
|
/>
|
|
|
- </Card>
|
|
|
|
|
|
|
+ </div>
|
|
|
</Col>
|
|
</Col>
|
|
|
<Col span={6}>
|
|
<Col span={6}>
|
|
|
- <Card>
|
|
|
|
|
|
|
+ <div className="stat-card">
|
|
|
<Statistic
|
|
<Statistic
|
|
|
- title="已认证"
|
|
|
|
|
|
|
+ title={<span style={{ color: '#2f1f0f', fontSize: '16px', fontWeight: 500 }}>已认证</span>}
|
|
|
value={stats?.certifiedCount || 0}
|
|
value={stats?.certifiedCount || 0}
|
|
|
- prefix={<CheckCircleOutlined style={{ color: '#52c41a' }} />}
|
|
|
|
|
|
|
+ valueStyle={{ color: '#5c7c5c', fontSize: '28px', fontWeight: 'bold' }}
|
|
|
|
|
+ prefix={<CheckCircleOutlined style={{ color: '#5c7c5c', fontSize: '24px' }} />}
|
|
|
/>
|
|
/>
|
|
|
- </Card>
|
|
|
|
|
|
|
+ </div>
|
|
|
</Col>
|
|
</Col>
|
|
|
<Col span={6}>
|
|
<Col span={6}>
|
|
|
- <Card>
|
|
|
|
|
|
|
+ <div className="stat-card">
|
|
|
<Statistic
|
|
<Statistic
|
|
|
- title="认证中"
|
|
|
|
|
|
|
+ title={<span style={{ color: '#2f1f0f', fontSize: '16px', fontWeight: 500 }}>认证中</span>}
|
|
|
value={stats?.pendingCount || 0}
|
|
value={stats?.pendingCount || 0}
|
|
|
- prefix={<BarChartOutlined style={{ color: '#1890ff' }} />}
|
|
|
|
|
|
|
+ valueStyle={{ color: '#4a6b7c', fontSize: '28px', fontWeight: 'bold' }}
|
|
|
|
|
+ prefix={<BarChartOutlined style={{ color: '#4a6b7c', fontSize: '24px' }} />}
|
|
|
/>
|
|
/>
|
|
|
- </Card>
|
|
|
|
|
|
|
+ </div>
|
|
|
</Col>
|
|
</Col>
|
|
|
<Col span={6}>
|
|
<Col span={6}>
|
|
|
- <Card>
|
|
|
|
|
|
|
+ <div className="stat-card">
|
|
|
<Statistic
|
|
<Statistic
|
|
|
- title="未认证"
|
|
|
|
|
|
|
+ title={<span style={{ color: '#2f1f0f', fontSize: '16px', fontWeight: 500 }}>未认证</span>}
|
|
|
value={stats?.unCertifiedCount || 0}
|
|
value={stats?.unCertifiedCount || 0}
|
|
|
- prefix={<CloseCircleOutlined style={{ color: '#ff4d4f' }} />}
|
|
|
|
|
|
|
+ valueStyle={{ color: '#a85c5c', fontSize: '28px', fontWeight: 'bold' }}
|
|
|
|
|
+ prefix={<CloseCircleOutlined style={{ color: '#a85c5c', fontSize: '24px' }} />}
|
|
|
/>
|
|
/>
|
|
|
- </Card>
|
|
|
|
|
|
|
+ </div>
|
|
|
</Col>
|
|
</Col>
|
|
|
</Row>
|
|
</Row>
|
|
|
|
|
|
|
|
{/* 搜索表单 */}
|
|
{/* 搜索表单 */}
|
|
|
- <Card style={{ marginBottom: 24 }}>
|
|
|
|
|
|
|
+ <div className="ink-card" style={{ marginBottom: 32, padding: 24 }}>
|
|
|
<Form layout="inline" onFinish={handleSearch}>
|
|
<Form layout="inline" onFinish={handleSearch}>
|
|
|
- <Form.Item name="keyword" label="关键词">
|
|
|
|
|
- <Input placeholder="姓名/机构/技能" prefix={<SearchOutlined />} />
|
|
|
|
|
|
|
+ <Form.Item name="keyword" label={<span style={{ color: '#2f1f0f', fontWeight: 500 }}>关键词</span>}>
|
|
|
|
|
+ <Input
|
|
|
|
|
+ placeholder="姓名/机构/技能"
|
|
|
|
|
+ prefix={<SearchOutlined style={{ color: '#8b7355' }} />}
|
|
|
|
|
+ className="ink-input"
|
|
|
|
|
+ />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="certificationStatus" label="认证状态">
|
|
|
|
|
- <Select style={{ width: 120 }} allowClear>
|
|
|
|
|
|
|
+ <Form.Item name="certificationStatus" label={<span style={{ color: '#2f1f0f', fontWeight: 500 }}>认证状态</span>}>
|
|
|
|
|
+ <Select style={{ width: 140 }} allowClear className="ink-select">
|
|
|
<Option value={0}>未认证</Option>
|
|
<Option value={0}>未认证</Option>
|
|
|
<Option value={1}>认证中</Option>
|
|
<Option value={1}>认证中</Option>
|
|
|
<Option value={2}>已认证</Option>
|
|
<Option value={2}>已认证</Option>
|
|
|
<Option value={3}>已拒绝</Option>
|
|
<Option value={3}>已拒绝</Option>
|
|
|
</Select>
|
|
</Select>
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="jobSeekingStatus" label="求职状态">
|
|
|
|
|
- <Select style={{ width: 120 }} allowClear>
|
|
|
|
|
|
|
+ <Form.Item name="jobSeekingStatus" label={<span style={{ color: '#2f1f0f', fontWeight: 500 }}>求职状态</span>}>
|
|
|
|
|
+ <Select style={{ width: 140 }} allowClear className="ink-select">
|
|
|
<Option value={0}>未求职</Option>
|
|
<Option value={0}>未求职</Option>
|
|
|
<Option value={1}>积极求职</Option>
|
|
<Option value={1}>积极求职</Option>
|
|
|
<Option value={2}>观望机会</Option>
|
|
<Option value={2}>观望机会</Option>
|
|
@@ -416,15 +510,19 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
<Form.Item>
|
|
<Form.Item>
|
|
|
<Space>
|
|
<Space>
|
|
|
- <Button type="primary" htmlType="submit">搜索</Button>
|
|
|
|
|
- <Button onClick={handleReset}>重置</Button>
|
|
|
|
|
|
|
+ <Button type="primary" htmlType="submit" className="ink-button">
|
|
|
|
|
+ 搜索
|
|
|
|
|
+ </Button>
|
|
|
|
|
+ <Button onClick={handleReset} className="ink-secondary-button">
|
|
|
|
|
+ 重置
|
|
|
|
|
+ </Button>
|
|
|
</Space>
|
|
</Space>
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
</Form>
|
|
</Form>
|
|
|
- </Card>
|
|
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
{/* 数据表格 */}
|
|
{/* 数据表格 */}
|
|
|
- <Card>
|
|
|
|
|
|
|
+ <div className="ink-card" style={{ overflow: 'hidden' }}>
|
|
|
<Table
|
|
<Table
|
|
|
columns={columns}
|
|
columns={columns}
|
|
|
dataSource={data}
|
|
dataSource={data}
|
|
@@ -436,51 +534,97 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
total,
|
|
total,
|
|
|
showSizeChanger: true,
|
|
showSizeChanger: true,
|
|
|
showQuickJumper: true,
|
|
showQuickJumper: true,
|
|
|
- showTotal: (total, range) => `第 ${range[0]}-${range[1]} 条/共 ${total} 条`,
|
|
|
|
|
|
|
+ showTotal: (total, range) => <span style={{ color: '#2f1f0f' }}>第 {range[0]}-{range[1]} 条/共 {total} 条</span>,
|
|
|
onChange: (page, size) => {
|
|
onChange: (page, size) => {
|
|
|
setCurrent(page);
|
|
setCurrent(page);
|
|
|
setPageSize(size);
|
|
setPageSize(size);
|
|
|
},
|
|
},
|
|
|
}}
|
|
}}
|
|
|
scroll={{ x: 'max-content' }}
|
|
scroll={{ x: 'max-content' }}
|
|
|
|
|
+ className="silver-talents-table"
|
|
|
/>
|
|
/>
|
|
|
- </Card>
|
|
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
{/* 详情弹窗 */}
|
|
{/* 详情弹窗 */}
|
|
|
<Modal
|
|
<Modal
|
|
|
- title="人才详情"
|
|
|
|
|
|
|
+ title={<span style={{ color: '#2f1f0f', fontSize: '20px', fontWeight: 'bold' }}>人才详情</span>}
|
|
|
width={800}
|
|
width={800}
|
|
|
open={detailModalVisible}
|
|
open={detailModalVisible}
|
|
|
onCancel={() => setDetailModalVisible(false)}
|
|
onCancel={() => setDetailModalVisible(false)}
|
|
|
footer={[
|
|
footer={[
|
|
|
- <Button key="close" onClick={() => setDetailModalVisible(false)}>
|
|
|
|
|
|
|
+ <Button key="close" onClick={() => setDetailModalVisible(false)} className="ink-secondary-button">
|
|
|
关闭
|
|
关闭
|
|
|
</Button>,
|
|
</Button>,
|
|
|
]}
|
|
]}
|
|
|
|
|
+ className="ink-modal"
|
|
|
|
|
+ style={{
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.95)',
|
|
|
|
|
+ backdropFilter: 'blur(10px)'
|
|
|
|
|
+ }}
|
|
|
|
|
+ bodyStyle={{
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.9)',
|
|
|
|
|
+ borderRadius: '12px'
|
|
|
|
|
+ }}
|
|
|
>
|
|
>
|
|
|
{selectedTalent && (
|
|
{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
|
|
|
|
|
+ bordered
|
|
|
|
|
+ column={2}
|
|
|
|
|
+ style={{
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.8)',
|
|
|
|
|
+ borderRadius: '8px',
|
|
|
|
|
+ border: '1px solid #d4c4a8'
|
|
|
|
|
+ }}
|
|
|
|
|
+ labelStyle={{
|
|
|
|
|
+ background: 'rgba(212, 196, 168, 0.3)',
|
|
|
|
|
+ color: '#2f1f0f',
|
|
|
|
|
+ fontWeight: 600,
|
|
|
|
|
+ borderRight: '1px solid #d4c4a8'
|
|
|
|
|
+ }}
|
|
|
|
|
+ contentStyle={{
|
|
|
|
|
+ color: '#2f1f0f',
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.9)'
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Descriptions.Item label="姓名"><strong style={{ color: '#3a2f26' }}>{selectedTalent.realName}</strong></Descriptions.Item>
|
|
|
|
|
+ <Descriptions.Item label="年龄"><span style={{ color: '#8b7355' }}>{selectedTalent.age}岁</span></Descriptions.Item>
|
|
|
|
|
+ <Descriptions.Item label="性别"><span style={{ color: '#8b7355' }}>{getGenderText(selectedTalent.gender)}</span></Descriptions.Item>
|
|
|
|
|
+ <Descriptions.Item label="所属机构"><span style={{ color: '#8b7355' }}>{selectedTalent.organization || '-'}</span></Descriptions.Item>
|
|
|
|
|
+ <Descriptions.Item label="联系电话"><span style={{ color: '#8b7355' }}>{selectedTalent.phone}</span></Descriptions.Item>
|
|
|
|
|
+ <Descriptions.Item label="邮箱"><span style={{ color: '#8b7355' }}>{selectedTalent.email || '-'}</span></Descriptions.Item>
|
|
|
<Descriptions.Item label="认证状态">
|
|
<Descriptions.Item label="认证状态">
|
|
|
- <Tag color={getCertificationStatusColor(selectedTalent.certificationStatus)}>
|
|
|
|
|
|
|
+ <Tag color={getCertificationStatusColor(selectedTalent.certificationStatus)} style={{ fontSize: '14px', padding: '4px 12px' }}>
|
|
|
{getCertificationStatusText(selectedTalent.certificationStatus)}
|
|
{getCertificationStatusText(selectedTalent.certificationStatus)}
|
|
|
</Tag>
|
|
</Tag>
|
|
|
</Descriptions.Item>
|
|
</Descriptions.Item>
|
|
|
<Descriptions.Item label="求职状态">
|
|
<Descriptions.Item label="求职状态">
|
|
|
- {getJobSeekingStatusText(selectedTalent.jobSeekingStatus)}
|
|
|
|
|
|
|
+ <span style={{ color: '#8b7355' }}>{getJobSeekingStatusText(selectedTalent.jobSeekingStatus)}</span>
|
|
|
</Descriptions.Item>
|
|
</Descriptions.Item>
|
|
|
- <Descriptions.Item label="积分">{selectedTalent.totalPoints}</Descriptions.Item>
|
|
|
|
|
- <Descriptions.Item label="知识排名分">{selectedTalent.knowledgeRankingScore}</Descriptions.Item>
|
|
|
|
|
|
|
+ <Descriptions.Item label="积分"><span style={{ color: '#5c7c5c', fontWeight: 'bold' }}>{selectedTalent.totalPoints}</span></Descriptions.Item>
|
|
|
|
|
+ <Descriptions.Item label="知识排名分"><span style={{ color: '#4a6b7c', fontWeight: 'bold' }}>{selectedTalent.knowledgeRankingScore}</span></Descriptions.Item>
|
|
|
<Descriptions.Item label="个人简介" span={2}>
|
|
<Descriptions.Item label="个人简介" span={2}>
|
|
|
- {selectedTalent.personalIntro || '-'}
|
|
|
|
|
|
|
+ <div style={{
|
|
|
|
|
+ background: 'rgba(245, 243, 240, 0.5)',
|
|
|
|
|
+ padding: '12px',
|
|
|
|
|
+ borderRadius: '8px',
|
|
|
|
|
+ border: '1px solid #d4c4a8',
|
|
|
|
|
+ color: '#2f1f0f',
|
|
|
|
|
+ lineHeight: '1.6'
|
|
|
|
|
+ }}>
|
|
|
|
|
+ {selectedTalent.personalIntro || '-'}
|
|
|
|
|
+ </div>
|
|
|
</Descriptions.Item>
|
|
</Descriptions.Item>
|
|
|
<Descriptions.Item label="个人技能" span={2}>
|
|
<Descriptions.Item label="个人技能" span={2}>
|
|
|
- {selectedTalent.personalSkills || '-'}
|
|
|
|
|
|
|
+ <div style={{
|
|
|
|
|
+ background: 'rgba(245, 243, 240, 0.5)',
|
|
|
|
|
+ padding: '12px',
|
|
|
|
|
+ borderRadius: '8px',
|
|
|
|
|
+ border: '1px solid #d4c4a8',
|
|
|
|
|
+ color: '#2f1f0f',
|
|
|
|
|
+ lineHeight: '1.6'
|
|
|
|
|
+ }}>
|
|
|
|
|
+ {selectedTalent.personalSkills || '-'}
|
|
|
|
|
+ </div>
|
|
|
</Descriptions.Item>
|
|
</Descriptions.Item>
|
|
|
</Descriptions>
|
|
</Descriptions>
|
|
|
)}
|
|
)}
|
|
@@ -488,63 +632,109 @@ export const SilverTalentsPage: React.FC = () => {
|
|
|
|
|
|
|
|
{/* 编辑弹窗 */}
|
|
{/* 编辑弹窗 */}
|
|
|
<Modal
|
|
<Modal
|
|
|
- title="编辑人才信息"
|
|
|
|
|
|
|
+ title={<span style={{ color: '#2f1f0f', fontSize: '20px', fontWeight: 'bold' }}>编辑人才信息</span>}
|
|
|
width={600}
|
|
width={600}
|
|
|
open={editModalVisible}
|
|
open={editModalVisible}
|
|
|
onCancel={() => setEditModalVisible(false)}
|
|
onCancel={() => setEditModalVisible(false)}
|
|
|
onOk={() => editForm.submit()}
|
|
onOk={() => editForm.submit()}
|
|
|
|
|
+ okButtonProps={{ className: 'ink-button' }}
|
|
|
|
|
+ cancelButtonProps={{ className: 'ink-secondary-button' }}
|
|
|
|
|
+ className="ink-modal"
|
|
|
|
|
+ style={{
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.95)',
|
|
|
|
|
+ backdropFilter: 'blur(10px)'
|
|
|
|
|
+ }}
|
|
|
|
|
+ bodyStyle={{
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.9)',
|
|
|
|
|
+ borderRadius: '12px'
|
|
|
|
|
+ }}
|
|
|
>
|
|
>
|
|
|
<Form form={editForm} onFinish={handleEditSubmit} layout="vertical">
|
|
<Form form={editForm} onFinish={handleEditSubmit} layout="vertical">
|
|
|
- <Form.Item name="realName" label="真实姓名" rules={[{ required: true }]}>
|
|
|
|
|
- <Input />
|
|
|
|
|
|
|
+ <Form.Item
|
|
|
|
|
+ name="realName"
|
|
|
|
|
+ label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>真实姓名</span>}
|
|
|
|
|
+ rules={[{ required: true, message: '请输入真实姓名' }]}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Input className="ink-input" />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="age" label="年龄" rules={[{ required: true }]}>
|
|
|
|
|
- <Input type="number" min={50} max={100} />
|
|
|
|
|
|
|
+ <Form.Item
|
|
|
|
|
+ name="age"
|
|
|
|
|
+ label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>年龄</span>}
|
|
|
|
|
+ rules={[{ required: true, message: '请输入年龄' }]}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Input type="number" min={50} max={100} className="ink-input" />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="gender" label="性别" rules={[{ required: true }]}>
|
|
|
|
|
- <Select>
|
|
|
|
|
|
|
+ <Form.Item
|
|
|
|
|
+ name="gender"
|
|
|
|
|
+ label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>性别</span>}
|
|
|
|
|
+ rules={[{ required: true, message: '请选择性别' }]}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Select className="ink-select">
|
|
|
<Option value={0}>男</Option>
|
|
<Option value={0}>男</Option>
|
|
|
<Option value={1}>女</Option>
|
|
<Option value={1}>女</Option>
|
|
|
<Option value={2}>其他</Option>
|
|
<Option value={2}>其他</Option>
|
|
|
</Select>
|
|
</Select>
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="organization" label="所属机构">
|
|
|
|
|
- <Input />
|
|
|
|
|
|
|
+ <Form.Item name="organization" label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>所属机构</span>}>
|
|
|
|
|
+ <Input className="ink-input" />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="phone" label="联系电话" rules={[{ required: true }]}>
|
|
|
|
|
- <Input />
|
|
|
|
|
|
|
+ <Form.Item
|
|
|
|
|
+ name="phone"
|
|
|
|
|
+ label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>联系电话</span>}
|
|
|
|
|
+ rules={[{ required: true, message: '请输入联系电话' }]}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Input className="ink-input" />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="email" label="邮箱">
|
|
|
|
|
- <Input />
|
|
|
|
|
|
|
+ <Form.Item name="email" label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>邮箱</span>}>
|
|
|
|
|
+ <Input className="ink-input" />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="personalIntro" label="个人简介">
|
|
|
|
|
- <TextArea rows={3} />
|
|
|
|
|
|
|
+ <Form.Item name="personalIntro" label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>个人简介</span>}>
|
|
|
|
|
+ <TextArea rows={3} className="ink-input" />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="personalSkills" label="个人技能">
|
|
|
|
|
- <TextArea rows={3} />
|
|
|
|
|
|
|
+ <Form.Item name="personalSkills" label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>个人技能</span>}>
|
|
|
|
|
+ <TextArea rows={3} className="ink-input" />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
</Form>
|
|
</Form>
|
|
|
</Modal>
|
|
</Modal>
|
|
|
|
|
|
|
|
{/* 认证弹窗 */}
|
|
{/* 认证弹窗 */}
|
|
|
<Modal
|
|
<Modal
|
|
|
- title="更新认证状态"
|
|
|
|
|
|
|
+ title={<span style={{ color: '#2f1f0f', fontSize: '20px', fontWeight: 'bold' }}>更新认证状态</span>}
|
|
|
width={500}
|
|
width={500}
|
|
|
open={certModalVisible}
|
|
open={certModalVisible}
|
|
|
onCancel={() => setCertModalVisible(false)}
|
|
onCancel={() => setCertModalVisible(false)}
|
|
|
onOk={() => certForm.submit()}
|
|
onOk={() => certForm.submit()}
|
|
|
|
|
+ okButtonProps={{ className: 'ink-button' }}
|
|
|
|
|
+ cancelButtonProps={{ className: 'ink-secondary-button' }}
|
|
|
|
|
+ className="ink-modal"
|
|
|
|
|
+ style={{
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.95)',
|
|
|
|
|
+ backdropFilter: 'blur(10px)'
|
|
|
|
|
+ }}
|
|
|
|
|
+ bodyStyle={{
|
|
|
|
|
+ background: 'rgba(255, 255, 255, 0.9)',
|
|
|
|
|
+ borderRadius: '12px'
|
|
|
|
|
+ }}
|
|
|
>
|
|
>
|
|
|
<Form form={certForm} onFinish={handleCertSubmit} layout="vertical">
|
|
<Form form={certForm} onFinish={handleCertSubmit} layout="vertical">
|
|
|
- <Form.Item name="certificationStatus" label="认证状态" rules={[{ required: true }]}>
|
|
|
|
|
- <Select>
|
|
|
|
|
|
|
+ <Form.Item
|
|
|
|
|
+ name="certificationStatus"
|
|
|
|
|
+ label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>认证状态</span>}
|
|
|
|
|
+ rules={[{ required: true, message: '请选择认证状态' }]}
|
|
|
|
|
+ >
|
|
|
|
|
+ <Select className="ink-select">
|
|
|
<Option value={0}>未认证</Option>
|
|
<Option value={0}>未认证</Option>
|
|
|
<Option value={1}>认证中</Option>
|
|
<Option value={1}>认证中</Option>
|
|
|
<Option value={2}>已认证</Option>
|
|
<Option value={2}>已认证</Option>
|
|
|
<Option value={3}>已拒绝</Option>
|
|
<Option value={3}>已拒绝</Option>
|
|
|
</Select>
|
|
</Select>
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
- <Form.Item name="certificationInfo" label="认证信息">
|
|
|
|
|
- <TextArea rows={4} placeholder="请输入认证信息或拒绝理由" />
|
|
|
|
|
|
|
+ <Form.Item name="certificationInfo" label={<span style={{ color: '#2f1f0f', fontWeight: 600 }}>认证信息</span>}>
|
|
|
|
|
+ <TextArea
|
|
|
|
|
+ rows={4}
|
|
|
|
|
+ placeholder="请输入认证信息或拒绝理由"
|
|
|
|
|
+ className="ink-input"
|
|
|
|
|
+ />
|
|
|
</Form.Item>
|
|
</Form.Item>
|
|
|
</Form>
|
|
</Form>
|
|
|
</Modal>
|
|
</Modal>
|