|
|
@@ -232,11 +232,18 @@ export const SilverJobsPage: React.FC = () => {
|
|
|
|
|
|
if (response.status === 200) {
|
|
|
const result = await response.json();
|
|
|
- setData(result.data);
|
|
|
- setTotal(result.pagination.total);
|
|
|
+ setData(result.data || []);
|
|
|
+ setTotal(result.pagination?.total || 0);
|
|
|
+ } else {
|
|
|
+ setData([]);
|
|
|
+ setTotal(0);
|
|
|
+ message.error('获取岗位数据失败');
|
|
|
}
|
|
|
} catch (error) {
|
|
|
+ console.error('获取岗位数据失败:', error);
|
|
|
message.error('获取岗位数据失败');
|
|
|
+ setData([]);
|
|
|
+ setTotal(0);
|
|
|
} finally {
|
|
|
setLoading(false);
|
|
|
}
|
|
|
@@ -255,10 +262,15 @@ export const SilverJobsPage: React.FC = () => {
|
|
|
|
|
|
if (response.status === 200) {
|
|
|
const result = await response.json();
|
|
|
- setCertifiedCompanies(result.data);
|
|
|
+ setCertifiedCompanies(result.data || []);
|
|
|
+ } else {
|
|
|
+ setCertifiedCompanies([]);
|
|
|
+ message.error('获取已认证公司列表失败');
|
|
|
}
|
|
|
} catch (error) {
|
|
|
+ console.error('获取已认证公司列表失败:', error);
|
|
|
message.error('获取已认证公司列表失败');
|
|
|
+ setCertifiedCompanies([]);
|
|
|
} finally {
|
|
|
setCompaniesLoading(false);
|
|
|
}
|
|
|
@@ -266,12 +278,13 @@ export const SilverJobsPage: React.FC = () => {
|
|
|
|
|
|
// 获取统计数据
|
|
|
const getStats = () => {
|
|
|
+ const safeData = data || [];
|
|
|
const stats = {
|
|
|
- total: data.length,
|
|
|
- published: data.filter(item => item.status === 1).length,
|
|
|
- draft: data.filter(item => item.status === 0).length,
|
|
|
- closed: data.filter(item => item.status === 2).length,
|
|
|
- filled: data.filter(item => item.status === 3).length,
|
|
|
+ total: safeData.length,
|
|
|
+ published: safeData.filter(item => item && item.status === 1).length,
|
|
|
+ draft: safeData.filter(item => item && item.status === 0).length,
|
|
|
+ closed: safeData.filter(item => item && item.status === 2).length,
|
|
|
+ filled: safeData.filter(item => item && item.status === 3).length,
|
|
|
};
|
|
|
return stats;
|
|
|
};
|
|
|
@@ -480,7 +493,7 @@ export const SilverJobsPage: React.FC = () => {
|
|
|
<Card>
|
|
|
<Table
|
|
|
columns={columns}
|
|
|
- dataSource={data}
|
|
|
+ dataSource={data || []}
|
|
|
loading={loading}
|
|
|
rowKey="id"
|
|
|
pagination={{
|
|
|
@@ -496,6 +509,9 @@ export const SilverJobsPage: React.FC = () => {
|
|
|
},
|
|
|
}}
|
|
|
scroll={{ x: 'max-content' }}
|
|
|
+ locale={{
|
|
|
+ emptyText: loading ? '加载中...' : '暂无数据'
|
|
|
+ }}
|
|
|
/>
|
|
|
</Card>
|
|
|
|
|
|
@@ -588,7 +604,7 @@ export const SilverJobsPage: React.FC = () => {
|
|
|
(option?.children as string)?.toLowerCase().includes(input.toLowerCase())
|
|
|
}
|
|
|
>
|
|
|
- {certifiedCompanies.map(company => (
|
|
|
+ {(certifiedCompanies || []).map(company => (
|
|
|
<Option key={company.id} value={company.id}>
|
|
|
{company.name}
|
|
|
</Option>
|