import { Image } from '@tarojs/components'; import classNames from 'classnames'; import React, { useCallback } from 'react'; import { CertificationStatusIcon } from '@/components/certification-status'; import { PageUrl } from '@/constants/app'; // import { CITY_CODE_TO_NAME_MAP, COUNTY_CODE_TO_NAME_MAP } from '@/constants/city'; import { CertificationStatusType } from '@/constants/company'; import { EMPLOY_TYPE_TITLE_MAP, EmployType } from '@/constants/job'; import { JobInfo } from '@/types/job'; // import { LocationInfo } from '@/types/location'; import { getJobSalary, getJobTitle } from '@/utils/job'; import { calcDistance } from '@/utils/location'; import { navigateTo, redirectTo } from '@/utils/route'; import './index.less'; interface IProps { data: JobInfo; redirectOpen?: boolean; className?: string; } const PREFIX = 'job-card'; // const getCityDes = (location: LocationInfo) => { // if (!location) { // return ''; // } // let des = CITY_CODE_TO_NAME_MAP.get(location.cityCode); // if (location.countyCode) { // des += `-${COUNTY_CODE_TO_NAME_MAP.get(location.countyCode)}`; // } // return des; // }; function JobCard(props: IProps) { const { className, data, redirectOpen } = props; const { id, tags = [], employType = EmployType.All, jobDescription, sourceText, publisher, publisherAvatar, jobLocation, distance, isAuthed = false, } = data; const handleClickCard = useCallback(() => { if (redirectOpen) { redirectTo(PageUrl.JobDetail, { id }); } else { navigateTo(PageUrl.JobDetail, { id }); } }, [id, redirectOpen]); return (
{getJobTitle(data)}
{EMPLOY_TYPE_TITLE_MAP[employType]}
{isAuthed && ( )}
{tags.map((keyword: string, index) => (
{keyword}
))}
{getJobSalary(data) || '见描述'}
{jobDescription || sourceText}
{jobLocation?.address}
{distance && ( <>
{calcDistance(distance)}
)}
{publisher}
{/*
{getCityDes(jobLocation)}
*/}
{data.isRead &&
}
); } export default React.memo(JobCard);