import { Image as TaroImage } from '@tarojs/components'; import { Image } from '@taroify/core'; import { PhotoFail } from '@taroify/icons'; import { useCallback } from 'react'; import SkeletonLoading from '@/components/skeleton-loading'; import { PageUrl } from '@/constants/app'; import { MaterialViewSource, WORK_YEAR_LABELS } from '@/constants/material'; import { AnchorInfo } from '@/types/material'; import { calcDistance } from '@/utils/location'; import { getBasicInfo } from '@/utils/material'; import { navigateTo } from '@/utils/route'; import { activeDate } from '@/utils/time'; import './index.less'; interface IProps { data: AnchorInfo; jobId?: string; } const PREFIX = 'anchor-card'; const getSalary = (data: AnchorInfo) => { const { fullTimeMinPrice, fullTimeMaxPrice, partyTimeMinPrice, partyTimeMaxPrice } = data; const prices: string[] = []; if (fullTimeMinPrice && fullTimeMaxPrice) { prices.push(`${fullTimeMinPrice / 1000}-${fullTimeMaxPrice / 1000}K/月`); } if (partyTimeMinPrice && partyTimeMaxPrice) { prices.push(`${partyTimeMinPrice}-${partyTimeMaxPrice}/小时`); } return prices.filter(Boolean).join(' '); }; function AnchorCard(props: IProps) { const { data, jobId } = props; const style = data.isRead ? ({ '--read-color': '#999999' } as React.CSSProperties) : {}; const cover = (data.materialVideoInfoList.find(video => video.isDefault) || data.materialVideoInfoList[0])?.coverUrl; const handleClick = useCallback( () => navigateTo(PageUrl.MaterialView, { jobId, resumeId: data.id, source: MaterialViewSource.AnchorList }), [data, jobId] ); return (
} className={`${PREFIX}__cover`} placeholder={} />
{data.name}
{getBasicInfo(data)}
{WORK_YEAR_LABELS[data.workedYear] || ''}
{data.workedSecCategoryStr && (
{`播过 ${data.workedSecCategoryStr}`}
)}
{getSalary(data)}
{activeDate(data.sortTime)}
{typeof data.distance !== 'undefined' && (
{calcDistance(data.distance, 1)}
)}
); } export default AnchorCard;