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, getSalary } from '@/utils/material'; import { navigateTo } from '@/utils/route'; import { activeDate } from '@/utils/time'; import './index.less'; interface IProps { data: AnchorInfo; jobId?: string; validator: (onSuccess: () => void) => void; } const PREFIX = 'anchor-card'; function AnchorCard(props: IProps) { const { data, jobId, validator } = props; const style = data.isRead ? ({ '--read-color': '#999999' } as React.CSSProperties) : {}; const cover = (data.materialVideoInfoList.find(video => video.isDefault) || data.materialVideoInfoList[0])?.coverUrl; const handleNavTo = useCallback(() => { navigateTo(PageUrl.MaterialView, { jobId, resumeId: data.id, source: MaterialViewSource.AnchorList }); }, [data, jobId]); const handleClick = useCallback(() => { validator(handleNavTo); }, [handleNavTo, validator]); return (