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
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:
@@ -92,6 +92,7 @@ const transformJobData = (jobData: any) => {
|
|||||||
experience: jobData.experience ? experienceMap[jobData.experience] || jobData.experience : '不限',
|
experience: jobData.experience ? experienceMap[jobData.experience] || jobData.experience : '不限',
|
||||||
education: jobData.education ? educationMap[jobData.education] || jobData.education : '不限',
|
education: jobData.education ? educationMap[jobData.education] || jobData.education : '不限',
|
||||||
tags: Array.isArray(jobData.tags) ? jobData.tags : [],
|
tags: Array.isArray(jobData.tags) ? jobData.tags : [],
|
||||||
|
jobFeature: jobData.jobFeature,
|
||||||
salaryComposition: parseCommaSeparatedTags(jobData.salaryComposition),
|
salaryComposition: parseCommaSeparatedTags(jobData.salaryComposition),
|
||||||
welfareBenefits: parseCommaSeparatedTags(jobData.welfareBenefits),
|
welfareBenefits: parseCommaSeparatedTags(jobData.welfareBenefits),
|
||||||
workSchedule: parseCommaSeparatedTags(jobData.workSchedule),
|
workSchedule: parseCommaSeparatedTags(jobData.workSchedule),
|
||||||
@@ -143,6 +144,7 @@ const mockJobDetail = {
|
|||||||
experience: '3-5年',
|
experience: '3-5年',
|
||||||
education: '本科',
|
education: '本科',
|
||||||
companyNature: '',
|
companyNature: '',
|
||||||
|
jobFeature: '',
|
||||||
tags: [],
|
tags: [],
|
||||||
salaryComposition: [] as string[],
|
salaryComposition: [] as string[],
|
||||||
welfareBenefits: [] as string[],
|
welfareBenefits: [] as string[],
|
||||||
@@ -203,6 +205,7 @@ const JobDetailPage: React.FC = () => {
|
|||||||
]);
|
]);
|
||||||
const [scaleEnum, setScaleEnum] = useState<DictValueEnumObj>({});
|
const [scaleEnum, setScaleEnum] = useState<DictValueEnumObj>({});
|
||||||
const [companyNatureEnum, setCompanyNatureEnum] = useState<DictValueEnumObj>({});
|
const [companyNatureEnum, setCompanyNatureEnum] = useState<DictValueEnumObj>({});
|
||||||
|
const [jobFeatureEnum, setJobFeatureEnum] = useState<DictValueEnumObj>({});
|
||||||
const [industryTree, setIndustryTree] = useState<any[]>([]);
|
const [industryTree, setIndustryTree] = useState<any[]>([]);
|
||||||
const [complaintVisible, setComplaintVisible] = useState(false);
|
const [complaintVisible, setComplaintVisible] = useState(false);
|
||||||
|
|
||||||
@@ -268,10 +271,12 @@ const JobDetailPage: React.FC = () => {
|
|||||||
Promise.all([
|
Promise.all([
|
||||||
getDictValueEnum('scale', true, true),
|
getDictValueEnum('scale', true, true),
|
||||||
getDictValueEnum('company_nature', false, true),
|
getDictValueEnum('company_nature', false, true),
|
||||||
|
getDictValueEnum('job_feature', false, true),
|
||||||
getCmsIndustryTreeList(),
|
getCmsIndustryTreeList(),
|
||||||
]).then(([scaleData, companyNatureData, industryRes]) => {
|
]).then(([scaleData, companyNatureData, jobFeatureData, industryRes]) => {
|
||||||
setScaleEnum(scaleData);
|
setScaleEnum(scaleData);
|
||||||
setCompanyNatureEnum(companyNatureData);
|
setCompanyNatureEnum(companyNatureData);
|
||||||
|
setJobFeatureEnum(jobFeatureData);
|
||||||
if (industryRes?.code === 200 && industryRes?.data) {
|
if (industryRes?.code === 200 && industryRes?.data) {
|
||||||
setIndustryTree(industryRes.data);
|
setIndustryTree(industryRes.data);
|
||||||
}
|
}
|
||||||
@@ -564,11 +569,19 @@ const JobDetailPage: React.FC = () => {
|
|||||||
<Col span={16}>
|
<Col span={16}>
|
||||||
<div className="job-title-section">
|
<div className="job-title-section">
|
||||||
<Space direction="vertical" size={8}>
|
<Space direction="vertical" size={8}>
|
||||||
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '16px', flexWrap: 'wrap' }}>
|
<div style={{ display: 'flex', alignItems: 'baseline', gap: '16px', flexWrap: 'wrap' }}>
|
||||||
<Space align="baseline" size={16}>
|
<Title level={2} className="job-title" style={{ marginBottom: 0 }}>
|
||||||
<Title level={2} className="job-title" style={{ marginBottom: 0 }}>{jobDetail.title}</Title>
|
{jobDetail.title}
|
||||||
<Text className="job-salary-display">{jobDetail.salary}</Text>
|
{jobDetail.jobFeature && (
|
||||||
</Space>
|
<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>
|
||||||
</div>
|
</div>
|
||||||
<Space size={16}>
|
<Space size={16}>
|
||||||
<Text className="job-meta">
|
<Text className="job-meta">
|
||||||
|
|||||||
@@ -200,6 +200,7 @@ const JobListPage: React.FC = () => {
|
|||||||
const [educationEnum, setEducationEnum] = useState<DictValueEnumObj>({});
|
const [educationEnum, setEducationEnum] = useState<DictValueEnumObj>({});
|
||||||
const [scaleEnum, setScaleEnum] = useState<DictValueEnumObj>({});
|
const [scaleEnum, setScaleEnum] = useState<DictValueEnumObj>({});
|
||||||
const [companyNatureEnum, setCompanyNatureEnum] = useState<DictValueEnumObj>({});
|
const [companyNatureEnum, setCompanyNatureEnum] = useState<DictValueEnumObj>({});
|
||||||
|
const [jobFeatureEnum, setJobFeatureEnum] = useState<DictValueEnumObj>({});
|
||||||
const [jobTitleTree, setJobTitleTree] = useState<any[]>([]);
|
const [jobTitleTree, setJobTitleTree] = useState<any[]>([]);
|
||||||
const [industryTree, setIndustryTree] = useState<any[]>([]);
|
const [industryTree, setIndustryTree] = useState<any[]>([]);
|
||||||
const [searchValue, setSearchValue] = useState<string>(''); // 搜索框的值
|
const [searchValue, setSearchValue] = useState<string>(''); // 搜索框的值
|
||||||
@@ -316,12 +317,14 @@ const JobListPage: React.FC = () => {
|
|||||||
getDictValueEnum('education', true, true),
|
getDictValueEnum('education', true, true),
|
||||||
getDictValueEnum('scale', true, true),
|
getDictValueEnum('scale', true, true),
|
||||||
getDictValueEnum('company_nature', false, true),
|
getDictValueEnum('company_nature', false, true),
|
||||||
|
getDictValueEnum('job_feature', false, true),
|
||||||
getCmsIndustryTreeList(),
|
getCmsIndustryTreeList(),
|
||||||
getJobTitleTreeSelect(),
|
getJobTitleTreeSelect(),
|
||||||
]).then(([educationData, scaleData, companyNatureData, industryRes, jobTitleRes]) => {
|
]).then(([educationData, scaleData, companyNatureData, jobFeatureData, industryRes, jobTitleRes]) => {
|
||||||
setEducationEnum(educationData);
|
setEducationEnum(educationData);
|
||||||
setScaleEnum(scaleData);
|
setScaleEnum(scaleData);
|
||||||
setCompanyNatureEnum(companyNatureData);
|
setCompanyNatureEnum(companyNatureData);
|
||||||
|
setJobFeatureEnum(jobFeatureData);
|
||||||
if (industryRes?.code === 200 && industryRes?.data) {
|
if (industryRes?.code === 200 && industryRes?.data) {
|
||||||
setIndustryTree(industryRes.data);
|
setIndustryTree(industryRes.data);
|
||||||
}
|
}
|
||||||
@@ -888,12 +891,20 @@ const JobListPage: React.FC = () => {
|
|||||||
{job.isUrgent === 1 && (
|
{job.isUrgent === 1 && (
|
||||||
<Tag
|
<Tag
|
||||||
color="red"
|
color="red"
|
||||||
style={{ marginRight: 8, fontSize: 12, lineHeight: '20px' }}
|
style={{ marginRight: 6, fontSize: 12, lineHeight: '20px' }}
|
||||||
>
|
>
|
||||||
急聘
|
急聘
|
||||||
</Tag>
|
</Tag>
|
||||||
)}
|
)}
|
||||||
{job.jobTitle || job.title}
|
{job.jobTitle || job.title}
|
||||||
|
{job.jobFeature && (
|
||||||
|
<Tag
|
||||||
|
color="orange"
|
||||||
|
style={{ marginLeft: 6, fontSize: 12, lineHeight: '20px' }}
|
||||||
|
>
|
||||||
|
{getDictLabel(jobFeatureEnum, job.jobFeature)}
|
||||||
|
</Tag>
|
||||||
|
)}
|
||||||
</Title>
|
</Title>
|
||||||
<Text className="job-salary">
|
<Text className="job-salary">
|
||||||
{job.minSalary && job.maxSalary
|
{job.minSalary && job.maxSalary
|
||||||
@@ -972,12 +983,20 @@ const JobListPage: React.FC = () => {
|
|||||||
{selectedJob?.isUrgent === 1 && (
|
{selectedJob?.isUrgent === 1 && (
|
||||||
<Tag
|
<Tag
|
||||||
color="red"
|
color="red"
|
||||||
style={{ marginRight: 8, fontSize: 12, lineHeight: '20px' }}
|
style={{ marginRight: 6, fontSize: 12, lineHeight: '20px' }}
|
||||||
>
|
>
|
||||||
急聘
|
急聘
|
||||||
</Tag>
|
</Tag>
|
||||||
)}
|
)}
|
||||||
{selectedJob?.jobTitle || selectedJob?.title || '请选择职位'}
|
{selectedJob?.jobTitle || selectedJob?.title || '请选择职位'}
|
||||||
|
{selectedJob?.jobFeature && (
|
||||||
|
<Tag
|
||||||
|
color="orange"
|
||||||
|
style={{ marginLeft: 8, fontSize: 12, lineHeight: '22px' }}
|
||||||
|
>
|
||||||
|
{getDictLabel(jobFeatureEnum, selectedJob.jobFeature)}
|
||||||
|
</Tag>
|
||||||
|
)}
|
||||||
</Title>
|
</Title>
|
||||||
<Text className="salary-text">
|
<Text className="salary-text">
|
||||||
{selectedJob?.minSalary && selectedJob?.maxSalary
|
{selectedJob?.minSalary && selectedJob?.maxSalary
|
||||||
|
|||||||
Reference in New Issue
Block a user