11
Some checks are pending
Node CI / build (14.x, macOS-latest) (push) Waiting to run
Node CI / build (14.x, ubuntu-latest) (push) Waiting to run
Node CI / build (14.x, windows-latest) (push) Waiting to run
Node CI / build (16.x, macOS-latest) (push) Waiting to run
Node CI / build (16.x, ubuntu-latest) (push) Waiting to run
Node CI / build (16.x, windows-latest) (push) Waiting to run
coverage CI / build (push) Waiting to run
Node pnpm CI / build (16.x, macOS-latest) (push) Waiting to run
Node pnpm CI / build (16.x, ubuntu-latest) (push) Waiting to run
Node pnpm CI / build (16.x, windows-latest) (push) Waiting to run

This commit is contained in:
francis-fh
2026-07-26 18:45:43 +08:00
parent d653cd97d6
commit 9acb13c4c0
2 changed files with 41 additions and 9 deletions

View File

@@ -92,6 +92,7 @@ const transformJobData = (jobData: any) => {
experience: jobData.experience ? experienceMap[jobData.experience] || jobData.experience : '不限',
education: jobData.education ? educationMap[jobData.education] || jobData.education : '不限',
tags: Array.isArray(jobData.tags) ? jobData.tags : [],
jobFeature: jobData.jobFeature,
salaryComposition: parseCommaSeparatedTags(jobData.salaryComposition),
welfareBenefits: parseCommaSeparatedTags(jobData.welfareBenefits),
workSchedule: parseCommaSeparatedTags(jobData.workSchedule),
@@ -143,6 +144,7 @@ const mockJobDetail = {
experience: '3-5年',
education: '本科',
companyNature: '',
jobFeature: '',
tags: [],
salaryComposition: [] as string[],
welfareBenefits: [] as string[],
@@ -203,6 +205,7 @@ const JobDetailPage: React.FC = () => {
]);
const [scaleEnum, setScaleEnum] = useState<DictValueEnumObj>({});
const [companyNatureEnum, setCompanyNatureEnum] = useState<DictValueEnumObj>({});
const [jobFeatureEnum, setJobFeatureEnum] = useState<DictValueEnumObj>({});
const [industryTree, setIndustryTree] = useState<any[]>([]);
const [complaintVisible, setComplaintVisible] = useState(false);
@@ -268,10 +271,12 @@ const JobDetailPage: React.FC = () => {
Promise.all([
getDictValueEnum('scale', true, true),
getDictValueEnum('company_nature', false, true),
getDictValueEnum('job_feature', false, true),
getCmsIndustryTreeList(),
]).then(([scaleData, companyNatureData, industryRes]) => {
]).then(([scaleData, companyNatureData, jobFeatureData, industryRes]) => {
setScaleEnum(scaleData);
setCompanyNatureEnum(companyNatureData);
setJobFeatureEnum(jobFeatureData);
if (industryRes?.code === 200 && industryRes?.data) {
setIndustryTree(industryRes.data);
}
@@ -564,11 +569,19 @@ const JobDetailPage: React.FC = () => {
<Col span={16}>
<div className="job-title-section">
<Space direction="vertical" size={8}>
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '16px', flexWrap: 'wrap' }}>
<Space align="baseline" size={16}>
<Title level={2} className="job-title" style={{ marginBottom: 0 }}>{jobDetail.title}</Title>
<div style={{ display: 'flex', alignItems: 'baseline', gap: '16px', flexWrap: 'wrap' }}>
<Title level={2} className="job-title" style={{ marginBottom: 0 }}>
{jobDetail.title}
{jobDetail.jobFeature && (
<Tag
color="orange"
style={{ marginLeft: 10, fontSize: 13, lineHeight: '24px', verticalAlign: 'middle' }}
>
{getDictLabel(jobFeatureEnum, jobDetail.jobFeature)}
</Tag>
)}
</Title>
<Text className="job-salary-display">{jobDetail.salary}</Text>
</Space>
</div>
<Space size={16}>
<Text className="job-meta">

View File

@@ -200,6 +200,7 @@ const JobListPage: React.FC = () => {
const [educationEnum, setEducationEnum] = useState<DictValueEnumObj>({});
const [scaleEnum, setScaleEnum] = useState<DictValueEnumObj>({});
const [companyNatureEnum, setCompanyNatureEnum] = useState<DictValueEnumObj>({});
const [jobFeatureEnum, setJobFeatureEnum] = useState<DictValueEnumObj>({});
const [jobTitleTree, setJobTitleTree] = useState<any[]>([]);
const [industryTree, setIndustryTree] = useState<any[]>([]);
const [searchValue, setSearchValue] = useState<string>(''); // 搜索框的值
@@ -316,12 +317,14 @@ const JobListPage: React.FC = () => {
getDictValueEnum('education', true, true),
getDictValueEnum('scale', true, true),
getDictValueEnum('company_nature', false, true),
getDictValueEnum('job_feature', false, true),
getCmsIndustryTreeList(),
getJobTitleTreeSelect(),
]).then(([educationData, scaleData, companyNatureData, industryRes, jobTitleRes]) => {
]).then(([educationData, scaleData, companyNatureData, jobFeatureData, industryRes, jobTitleRes]) => {
setEducationEnum(educationData);
setScaleEnum(scaleData);
setCompanyNatureEnum(companyNatureData);
setJobFeatureEnum(jobFeatureData);
if (industryRes?.code === 200 && industryRes?.data) {
setIndustryTree(industryRes.data);
}
@@ -888,12 +891,20 @@ const JobListPage: React.FC = () => {
{job.isUrgent === 1 && (
<Tag
color="red"
style={{ marginRight: 8, fontSize: 12, lineHeight: '20px' }}
style={{ marginRight: 6, fontSize: 12, lineHeight: '20px' }}
>
</Tag>
)}
{job.jobTitle || job.title}
{job.jobFeature && (
<Tag
color="orange"
style={{ marginLeft: 6, fontSize: 12, lineHeight: '20px' }}
>
{getDictLabel(jobFeatureEnum, job.jobFeature)}
</Tag>
)}
</Title>
<Text className="job-salary">
{job.minSalary && job.maxSalary
@@ -972,12 +983,20 @@ const JobListPage: React.FC = () => {
{selectedJob?.isUrgent === 1 && (
<Tag
color="red"
style={{ marginRight: 8, fontSize: 12, lineHeight: '20px' }}
style={{ marginRight: 6, fontSize: 12, lineHeight: '20px' }}
>
</Tag>
)}
{selectedJob?.jobTitle || selectedJob?.title || '请选择职位'}
{selectedJob?.jobFeature && (
<Tag
color="orange"
style={{ marginLeft: 8, fontSize: 12, lineHeight: '22px' }}
>
{getDictLabel(jobFeatureEnum, selectedJob.jobFeature)}
</Tag>
)}
</Title>
<Text className="salary-text">
{selectedJob?.minSalary && selectedJob?.maxSalary