@@ -8,6 +8,6 @@ | |||
</head> | |||
<body> | |||
<div id="root"></div> | |||
<script src="/umi.15e5f129.js"></script> | |||
<script src="/umi.9a7953c1.js"></script> | |||
</body> | |||
</html> |
@@ -0,0 +1 @@ | |||
.company-item{width:100%;padding:16px 16px 0;background-color:#fff;border-radius:8px;cursor:pointer}.company-item:nth-child(5n){margin-right:0}.with-prefix:before{content:"";width:8px;height:8px;margin-right:16px;display:inline-block;background-color:#19be6e;transform:translateY(-1px)} |
@@ -1 +0,0 @@ | |||
.with-prefix:before{content:"";width:8px;height:8px;margin-right:16px;display:inline-block;background-color:#19be6e;transform:translateY(-1px)} |
@@ -45,7 +45,7 @@ const FooterIndex: React.FC = () => { | |||
}, | |||
}} | |||
> | |||
<div style={{ padding: '20px 414px', }}> | |||
<div style={{ padding: '20px 314px', }}> | |||
<Flex justify='space-between' style={{ width: '100%' }}> | |||
<Space direction='vertical' size={0} > | |||
<h3>关于我们</h3> |
@@ -0,0 +1,82 @@ | |||
import { useState, useEffect, useRef } from 'react'; | |||
import { Link } from '@umijs/max'; | |||
import { ProList, ProConfigProvider, ProFormCaptcha, ProFormCheckbox, ProFormText, setAlpha, ProForm, ProFormDependency } from '@ant-design/pro-components'; | |||
import { PhoneOutlined, MailOutlined, EnvironmentOutlined, ArrowRightOutlined, FireOutlined, StarOutlined, StarFilled } from '@ant-design/icons'; | |||
import { Space, Tabs, Avatar, Row, Col, Image, message, Card, ConfigProvider, Modal, Tag, Tooltip, Pagination, Flex, Descriptions, Button, Divider } from 'antd'; | |||
import { Imageprefix } from '@/constants/index' | |||
interface CommonJobProps { | |||
item: any, | |||
} | |||
const CommonJob: React.FC<CommonJobProps> = ({ item }: any) => { | |||
return ( | |||
<> | |||
<ConfigProvider | |||
theme={{ | |||
token: { | |||
colorPrimary: '#19be6e', | |||
}, components: { | |||
}, | |||
}} | |||
> | |||
<Flex vertical justify='space-between' style={{ width: '100%', background: '#ffffff', padding: '30px', borderRadius: 10, cursor: 'pointer' }}> | |||
<Space direction='vertical' size={10}> | |||
<Link to={{ pathname: `/talent/job/detail/?id=${item.id}` }} target="_blank" style={{ color: '#000000' }}> | |||
<Flex justify='space-between' align='center'> | |||
<Space> | |||
<h2>{item.name}</h2> | |||
{item.locations && item.locations.length > 0 ? <><EnvironmentOutlined style={{ color: 'gray' }} /><div style={{ color: 'gray' }}>{item.locations[0].name}</div> </> : ''} | |||
{item.urgent === 1 && <Tag icon={<FireOutlined />} bordered={false} color="#f50">急招</Tag>} | |||
</Space> | |||
<div style={{ color: '#19be6e', fontSize: 16 }}>{item.pay_range_text}</div> | |||
</Flex> | |||
</Link> | |||
<Space style={{ fontSize: 16, color: '#999' }}> | |||
{item.experience_text ? <>{item.experience_text}</> : ''} | |||
{item.school_degree_text ? <><Divider type='vertical' /> {item.school_degree_text} </> : ''} | |||
</Space> | |||
<Flex justify='space-between' align='center'> | |||
<Space style={{ fontSize: 16, color: '#999' }}> | |||
{item.holidays_text && item.experience_text != '无' ? <Tag>{item.holidays_text}</Tag> : ''} | |||
{item.profelevel_text && item.profelevel_text != '无' ? <Tag>{item.profelevel_text}</Tag> : ''} | |||
{item.shisu_text && item.shisu_text != '无' ? <Tag>{item.shisu_text}</Tag> : ''} | |||
<Tag>不限</Tag> | |||
</Space> | |||
<Space size={20}> | |||
<Link to={{ pathname: `/talent/job/detail/?id=${item.id}` }} target="_blank"> | |||
<Button type='primary'>投递该职位</Button> | |||
</Link> | |||
<Link to={{ pathname: `/talent/job/detail/?id=${item.id}` }} target="_blank"> | |||
<Button icon={<StarOutlined />} >收藏职位</Button> | |||
</Link> | |||
</Space> | |||
</Flex> | |||
</Space> | |||
<Divider /> | |||
<Space direction='vertical' size={10}> | |||
<Link to={{ pathname: `/talent/company/detail/?id=${item.company_id}` }} target="_blank" style={{ color: '#000000' }}> | |||
<Space> | |||
<h3>{item.full_name}</h3> | |||
</Space> | |||
</Link> | |||
<Flex justify='flex-start' align='center' style={{ fontSize: 14, color: '#999' }}> | |||
{item.nature_text ? <>{item.nature_text}</> : <>性质不限</>} | |||
{item.industry_text ? <><Divider type='vertical' /> {item.industry_text} </> : <><Divider type='vertical' />行业不限</>} | |||
{item.scale_text ? <><Divider type='vertical' /> {item.scale_text} </> : <><Divider type='vertical' />规模不限</>} | |||
</Flex> | |||
</Space> | |||
</Flex> | |||
</ConfigProvider> | |||
</> | |||
); | |||
}; | |||
export default CommonJob |
@@ -6,7 +6,7 @@ import { ConfigProvider, Button, Flex, Input, Space, Image, Pagination, Row, Col | |||
import { EllipsisOutlined, FireOutlined, EnvironmentOutlined, RightOutlined, StarOutlined } from '@ant-design/icons'; | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { PostJobSearch } from '@/services/apis/post'; | |||
import CommonJob from '@/components/Common/Job' | |||
import CommonJob from '@/components/Common/Job2' | |||
const CampusJob: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
@@ -15,7 +15,7 @@ const CampusJob: React.FC = () => { | |||
const [pageSize, setPageSize] = useState<number>(12) | |||
useEffect(() => { | |||
PostJobSearch({ page: 1, pagesize: 12, campus: 1 }).then(res => { | |||
PostJobSearch({ page: 1, pagesize: 8, campus: 1 }).then(res => { | |||
setList(res.data.jobs) | |||
}) | |||
}, []); | |||
@@ -44,7 +44,7 @@ const CampusJob: React.FC = () => { | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={24}> | |||
<Col span={12}> | |||
<CommonJob item={item}></CommonJob> | |||
</Col> |
@@ -14,11 +14,11 @@ const HomeProbation: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(9) | |||
const [pageSize, setPageSize] = useState<number>(12) | |||
useEffect(() => { | |||
GetAdvertscheduleList({ pagesize: 9, code: 'RMQYGGT' }).then(res => { | |||
GetAdvertscheduleList({ pagesize: 12, code: 'RMQYGGT' }).then(res => { | |||
setList(res.data.advertschedules) | |||
}) | |||
}, []); | |||
@@ -49,22 +49,26 @@ const HomeProbation: React.FC = () => { | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={8}> | |||
<Col span={6}> | |||
<Link to={{ pathname: `/talent/company/detail?id=${item.company_id}` }} target="_blank" style={{ width: '100%' }}> | |||
<Space direction='vertical' size={10} align='center' style={{ width: '100%', paddingTop: 20, paddingBottom: 20, background: '#ffffff', borderRadius: 8 }}> | |||
<Image src={item.image_url ? `${Imageprefix}${item.image_url}` : '/images/logo.jpg'} preview={false} width={'200px'} height={'112px'} style={{ borderRadius: '8px' }}></Image> | |||
<Typography.Title level={5} style={{ width: '100%', padding: '0 10px' }} | |||
<Flex vertical align='center' justify='center' className='company-item'> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} preview={false} width={100} height={100} style={{ borderRadius: '4px', objectFit: 'contain' }}></Image> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 16, textAlign: 'center', whiteSpace: 'nowrap', marginTop: 8, width: '100%' }} | |||
> | |||
{item.company_name} | |||
</Typography.Title> | |||
<Flex justify='flex-end' align='center' style={{ fontSize: 14, color: '#999' }}> | |||
{item.company_nature ? <>{item.company_nature}</> : <>性质不限</>} | |||
{item.industry_text ? <><Divider type='vertical' /> {item.industry_text} </> : <><Divider type='vertical' />行业不限</>} | |||
{item.company_scale ? <><Divider type='vertical' /> {item.company_scale} </> : <><Divider type='vertical' />规模不限</>} | |||
</Flex> | |||
</Space> | |||
</Typography.Paragraph> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 12, color: '#999', textAlign: 'center', whiteSpace: 'nowrap', width: '100%' }} | |||
> | |||
{item.nature_text ? item.nature_text : '性质不限'} | |||
{item.industry_text ? <><Divider type='vertical' />{item.industry_text}</> : <><Divider type='vertical' />行业不限</>} | |||
{item.scale_text ? <><Divider type='vertical' />{item.scale_text}</> : <><Divider type='vertical' />规模不限</>} | |||
</Typography.Paragraph> | |||
</Flex > | |||
</Link> | |||
</Col> | |||
</> | |||
)) |
@@ -2,7 +2,7 @@ | |||
import { useState, useEffect, useRef } from 'react'; | |||
import { ProList, PageContainer } from '@ant-design/pro-components'; | |||
import { ConfigProvider, Button, Flex, Input, Space, Image, Pagination, Row, Col, Divider, Tag, Card, Affix, Typography } from 'antd'; | |||
import { EllipsisOutlined, FireOutlined, LeftOutlined, RightOutlined, StarOutlined } from '@ant-design/icons'; | |||
import { EllipsisOutlined, FireOutlined, EnvironmentOutlined, RightOutlined, FieldTimeOutlined } from '@ant-design/icons'; | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { Imageprefix } from '@/constants'; | |||
@@ -12,10 +12,10 @@ const HomeFair: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(6) | |||
const [pageSize, setPageSize] = useState<number>(8) | |||
useEffect(() => { | |||
GetRecruitmentList({ page: 1, pagesize: 6, sortby: 'desc' }).then(res => { | |||
GetRecruitmentList({ page: 1, pagesize: 8, sortby: 'desc' }).then(res => { | |||
setList(res.data.recruitments) | |||
setTotal(res.data.total) | |||
}) | |||
@@ -44,22 +44,45 @@ const HomeFair: React.FC = () => { | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={8}> | |||
<Link to={{ pathname: `/talent/fair/detail?keyword=${item.title}` }} target="_blank" style={{ width: '100%' }}> | |||
<Space direction='vertical' size={10} align='center' style={{ width: '100%', background: '#ffffff', borderRadius: 8 }}> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/bg.jpg'} preview={false} width={'100%'} height={'210px'} style={{ borderRadius: '8px 8px 0 0' }}></Image> | |||
<Affix style={{ position: 'absolute', top: 10, right: 0 }}> | |||
<Tag color="#19be6e">{item.open_date}</Tag> | |||
</Affix> | |||
<Typography.Title level={5} style={{ width: '100%', padding: '0 10px' }} | |||
<Col span={6}> | |||
<Link to={{ pathname: `/talent/fair/detail?keyword=${item.title}` }} target="_blank" style={{ width: '100%' , color: '#000000'}}> | |||
<Flex vertical align='center' justify='center' style={{ background: '#fff', borderRadius: '4px' }}> | |||
<div style={{ | |||
width: '100%', | |||
position: 'relative', | |||
paddingTop: '56.25%', /* 16:9 的比例 */ | |||
overflow: 'hidden' | |||
}}> | |||
<img src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} style={{ | |||
position: 'absolute', | |||
top: 0, | |||
left: 0, | |||
width: '100%', | |||
height: '100%', | |||
borderRadius: '8px 8px 0 0' | |||
}} /> | |||
</div> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 2 }} | |||
style={{ fontSize: 16, fontWeight: 'bold', padding: '0 16px', marginTop: 8, minHeight: 50, width: '100%' }} | |||
> | |||
{item.title} | |||
</Typography.Title> | |||
</Space> | |||
</Typography.Paragraph> | |||
<Space size={4} style={{ | |||
padding: '0 16px', marginBottom: 16, width: '100%', color: 'gray' | |||
}}> | |||
<FieldTimeOutlined /> {item.open_date} {item.close_date ? <>至{item.close_date}</>: ''} | |||
</Space> | |||
<Space size={4} style={{ | |||
padding: '0 16px', marginBottom: 16, width: '100%',color: 'gray' | |||
}}> | |||
<EnvironmentOutlined /> {item.address} | |||
</Space> | |||
</Flex > | |||
</Link> | |||
</Col> | |||
</> | |||
)) | |||
} |
@@ -0,0 +1,11 @@ | |||
.company-item { | |||
width: 100%; | |||
padding: 16px 16px 0; | |||
background-color: #ffffff; | |||
border-radius: 8px; | |||
cursor: pointer; | |||
} | |||
.company-item:nth-child(5n) { | |||
margin-right: 0px; | |||
} |
@@ -6,18 +6,19 @@ import { EllipsisOutlined, FireOutlined, LeftOutlined, RightOutlined, StarOutlin | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { Imageprefix } from '@/constants'; | |||
import './index.less' | |||
import { PostCompanySearch } from '@/services/apis/company'; | |||
const HomeFamous: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(9) | |||
const [pageSize, setPageSize] = useState<number>(16) | |||
useEffect(() => { | |||
PostCompanySearch({ | |||
page: 1, | |||
pagesize: 9, | |||
pagesize: 16, | |||
sort: 'updated_at', | |||
sortby: 'desc', | |||
famous: 1 | |||
@@ -41,36 +42,42 @@ const HomeFamous: React.FC = () => { | |||
}} | |||
> | |||
<Space direction='vertical' size={20} style={{ width: '100%' }}> | |||
<Space direction='vertical' size={10} style={{ width: '100%' }}> | |||
{/* <Flex justify='center' align='center'> | |||
<Typography.Title level={2}>知名企业</Typography.Title> | |||
</Flex> */} | |||
<Divider orientation="left" orientationMargin="0"><Typography.Title level={2}>知名企业</Typography.Title></Divider> | |||
<Row gutter={[10, 10]}> | |||
<Row gutter={[16, 16]} > | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={8}> | |||
<Col span={6}> | |||
<Link to={{ pathname: `/talent/company/detail?id=${item.id}` }} target="_blank" style={{ width: '100%' }}> | |||
<Space direction='vertical' size={10} align='center' style={{ width: '100%', paddingTop: 20, paddingBottom: 20, background: '#ffffff', borderRadius: 8 }}> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} preview={false} width={'200px'} height={'112px'} style={{ borderRadius: '8px' }}></Image> | |||
<Typography.Title level={5} style={{ width: '100%', padding: '0 10px' }} | |||
<Flex vertical align='center' justify='center' className='company-item'> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} preview={false} width={100} height={100} style={{ borderRadius: '4px', objectFit: 'contain' }}></Image> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 16, textAlign: 'center', whiteSpace: 'nowrap', marginTop: 8, width: '100%' }} | |||
> | |||
{item.full_name} | |||
</Typography.Title> | |||
<Flex justify='flex-end' align='center' style={{ fontSize: 14, color: '#999' }}> | |||
{item.nature_text ? <>{item.nature_text}</> : <>性质不限</>} | |||
{item.industry_text ? <><Divider type='vertical' /> {item.industry_text} </> : <><Divider type='vertical' />行业不限</>} | |||
{item.scale_text ? <><Divider type='vertical' /> {item.scale_text} </> : <><Divider type='vertical' />规模不限</>} | |||
</Flex> | |||
</Space> | |||
</Typography.Paragraph> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 12, color: '#999', textAlign: 'center', whiteSpace: 'nowrap', width: '100%' }} | |||
> | |||
{item.nature_text ? item.nature_text : '性质不限'} | |||
{item.industry_text ? <><Divider type='vertical' />{item.industry_text}</> : <><Divider type='vertical' />行业不限</>} | |||
{item.scale_text ? <><Divider type='vertical' />{item.scale_text}</> : <><Divider type='vertical' />规模不限</>} | |||
</Typography.Paragraph> | |||
</Flex > | |||
</Link> | |||
</Col> | |||
</> | |||
)) | |||
} | |||
</Row> | |||
<Flex justify='center' align='center'> | |||
<Space> | |||
<Link to={{ pathname: '/talent/search/company?famous=1' }}> |
@@ -8,7 +8,7 @@ import { EllipsisOutlined, FireOutlined, EnvironmentOutlined, RightOutlined, Sta | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { PostJobSearch } from '@/services/apis/post'; | |||
import CommonJob from '@/components/Common/Job' | |||
import CommonJob from '@/components/Common/Job2' | |||
const HomeNewJob: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
@@ -16,7 +16,7 @@ const HomeNewJob: React.FC = () => { | |||
const [pageSize, setPageSize] = useState<number>(12) | |||
useEffect(() => { | |||
PostJobSearch({ page: 1, pagesize: 6, high_pay: 1 }).then(res => { | |||
PostJobSearch({ page: 1, pagesize: 8, high_pay: 1 }).then(res => { | |||
setList(res.data.jobs) | |||
}) | |||
}, []); | |||
@@ -44,7 +44,7 @@ const HomeNewJob: React.FC = () => { | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={24}> | |||
<Col span={12}> | |||
<CommonJob item={item}></CommonJob> | |||
</Col> | |||
</> |
@@ -8,15 +8,15 @@ import { EllipsisOutlined, FireOutlined, EnvironmentOutlined, RightOutlined, Sta | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { PostJobSearch } from '@/services/apis/post'; | |||
import CommonJob from '@/components/Common/Job' | |||
import CommonJob from '@/components/Common/Job2' | |||
const HomeNewJob: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(12) | |||
const [pageSize, setPageSize] = useState<number>(8) | |||
useEffect(() => { | |||
PostJobSearch({ page: 1, pagesize: 6 }).then(res => { | |||
PostJobSearch({ page: 1, pagesize: 8 }).then(res => { | |||
setList(res.data.jobs) | |||
}) | |||
}, []); | |||
@@ -39,12 +39,11 @@ const HomeNewJob: React.FC = () => { | |||
{/* <Flex justify='center' align='center'> | |||
<Typography.Title level={2}>热门职位</Typography.Title> | |||
</Flex> */} | |||
{/* <Divider orientation="left" orientationMargin="0"><Typography.Title level={2}>热门职位</Typography.Title></Divider> */} | |||
<Row gutter={[10, 10]}> | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={24}> | |||
<Col span={12}> | |||
<CommonJob item={item}></CommonJob> | |||
</Col> | |||
</> |
@@ -15,12 +15,12 @@ const HomeProbation: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(6) | |||
const [pageSize, setPageSize] = useState<number>(8) | |||
useEffect(() => { | |||
PostCompanySearch({ | |||
page: 1, | |||
pagesize: 6, | |||
pagesize: 8, | |||
sort: 'updated_at', | |||
sortby: 'desc', | |||
probation: 1 | |||
@@ -52,23 +52,28 @@ const HomeProbation: React.FC = () => { | |||
<Divider orientation="left" orientationMargin="0"><Typography.Title level={2}>见习基地</Typography.Title></Divider> | |||
<Row gutter={[10, 10]}> | |||
{ | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={8}> | |||
<Col span={6}> | |||
<Link to={{ pathname: `/talent/company/detail?id=${item.id}` }} target="_blank" style={{ width: '100%' }}> | |||
<Space direction='vertical' size={10} align='center' style={{ width: '100%',paddingTop: 20, paddingBottom: 20, background: '#ffffff', borderRadius: 8 }}> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} preview={false} width={'200px'} height={'112px'} style={{ borderRadius: '8px' }}></Image> | |||
<Typography.Title level={5} style={{ width: '100%', padding: '0 10px' }} | |||
<Flex vertical align='center' justify='center' className='company-item'> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} preview={false} width={100} height={100} style={{ borderRadius: '4px', objectFit: 'contain' }}></Image> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 16, textAlign: 'center', whiteSpace: 'nowrap', marginTop: 8, width: '100%' }} | |||
> | |||
{item.full_name} | |||
</Typography.Title> | |||
{/* <Flex justify='flex-end' align='center' style={{ fontSize: 14, color: '#999' }}> | |||
{item.nature_text ? <>{item.nature_text}</> : <>性质不限</>} | |||
{item.industry_text ? <><Divider type='vertical' /> {item.industry_text} </> : <><Divider type='vertical' />行业不限</>} | |||
{item.scale_text ? <><Divider type='vertical' /> {item.scale_text} </> : <><Divider type='vertical' />规模不限</>} | |||
</Flex> */} | |||
</Space> | |||
</Typography.Paragraph> | |||
{/* <Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 12, color: '#999', textAlign: 'center', whiteSpace: 'nowrap', width: '100%' }} | |||
> | |||
{item.nature_text ? item.nature_text : '性质不限'} | |||
{item.industry_text ? <><Divider type='vertical' />{item.industry_text}</> : <><Divider type='vertical' />行业不限</>} | |||
{item.scale_text ? <><Divider type='vertical' />{item.scale_text}</> : <><Divider type='vertical' />规模不限</>} | |||
</Typography.Paragraph> */} | |||
</Flex > | |||
</Link> | |||
</Col> |
@@ -8,7 +8,7 @@ import { SearchOutlined, FireOutlined, MessageOutlined, StarOutlined, Environmen | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { PostJobSearch } from '@/services/apis/post'; | |||
import CommonJob from '@/components/Common/Job' | |||
import CommonJob from '@/components/Common/Job2' | |||
const HomeNewJob: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
@@ -17,7 +17,7 @@ const HomeNewJob: React.FC = () => { | |||
const [pageSize, setPageSize] = useState<number>(12) | |||
useEffect(() => { | |||
PostJobSearch({ page: 1, pagesize: 12, urgent: 1 }).then(res => { | |||
PostJobSearch({ page: 1, pagesize: 8, urgent: 1 }).then(res => { | |||
setList(res.data.jobs) | |||
}) | |||
}, []); | |||
@@ -45,7 +45,7 @@ const HomeNewJob: React.FC = () => { | |||
{ | |||
list.length > 0 && list.map((item: any, index: number) => ( | |||
<> | |||
<Col span={24}> | |||
<Col span={12}> | |||
<CommonJob item={item}></CommonJob> | |||
</Col> |
@@ -53,7 +53,7 @@ const SearchFilter: React.FC<SearchFilterProps> = ({ dispatch, dictModel, getSea | |||
fetchData(); | |||
}, []); | |||
useEffect(() => { | |||
if (!isLoading) { | |||
dictModel.natureList.unshift({ id: 0, name: '不限', checked: true }); |
@@ -1,7 +1,7 @@ | |||
import { useState, useEffect, useRef } from 'react'; | |||
import { ProList, PageContainer } from '@ant-design/pro-components'; | |||
import { ConfigProvider, Button, Flex, Input, Space, Image, Tooltip, Row, Col, Pagination, Tag, Card, Affix, Typography, Anchor } from 'antd'; | |||
import { SearchOutlined, LikeOutlined, ArrowRightOutlined, StarOutlined } from '@ant-design/icons'; | |||
import { SearchOutlined, LikeOutlined, EnvironmentOutlined, FieldTimeOutlined } from '@ant-design/icons'; | |||
import { useModel, connect, history, Link } from 'umi'; | |||
@@ -66,36 +66,40 @@ const HomePage: React.FC = () => { | |||
<> | |||
<Col span={6}> | |||
<Link to={{ pathname: `/talent/fair/detail?keyword=${item.title}` }} target="_blank"> | |||
<Card | |||
size='small' | |||
bordered={false} | |||
cover={<> | |||
<Typography.Title level={4} style={{ background: '#edfff3', minHeight: 132 }}> | |||
<Affix style={{ position: 'absolute', top: 0, right: 0 }}> | |||
<Tag color="#19be6e">{item.open_date}</Tag> | |||
</Affix> | |||
<Tooltip title={item.title} placement="bottom"> | |||
<div style={{ | |||
display: '-webkit-box', | |||
WebkitBoxOrient: 'vertical', | |||
WebkitLineClamp: 3, | |||
overflow: 'hidden', | |||
textOverflow: 'ellipsis', | |||
padding: '36px 12px 0' | |||
}}>{item.title}</div> | |||
</Tooltip> | |||
</Typography.Title> | |||
</>} | |||
styles={{ | |||
header: { | |||
borderBottom: 'none' | |||
}, | |||
title: { | |||
fontSize: '14px' | |||
}, | |||
<Flex vertical align='center' justify='center' style={{ background: '#fff', borderRadius: '4px' }}> | |||
<div style={{ | |||
width: '100%', | |||
position: 'relative', | |||
paddingTop: '56.25%', /* 16:9 的比例 */ | |||
overflow: 'hidden' | |||
}}> | |||
<Card.Meta title={<>参与企业数: {item.join_count > 0 ? item.join_count : 0}</>} description={<>参与职位数:{item.job_count}</>} /> | |||
</Card> | |||
<img src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} style={{ | |||
position: 'absolute', | |||
top: 0, | |||
left: 0, | |||
width: '100%', | |||
height: '100%', | |||
borderRadius: '8px 8px 0 0' | |||
}} /> | |||
</div> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 2 }} | |||
style={{ fontSize: 16, fontWeight: 'bold', padding: '0 16px', marginTop: 8, minHeight: 50, width: '100%' }} | |||
> | |||
{item.title} | |||
</Typography.Paragraph> | |||
<Space size={4} style={{ | |||
padding: '0 16px', marginBottom: 16, width: '100%', color: 'gray' | |||
}}> | |||
<FieldTimeOutlined /> {item.open_date} {item.close_date ? <>至{item.close_date}</> : ''} | |||
</Space> | |||
<Space size={4} style={{ | |||
padding: '0 16px', marginBottom: 16, width: '100%', color: 'gray' | |||
}}> | |||
<EnvironmentOutlined /> {item.address} | |||
</Space> | |||
</Flex > | |||
</Link> | |||
</Col > |
@@ -1,6 +1,6 @@ | |||
import { useState, useEffect, useRef } from 'react'; | |||
import { ProList, PageContainer } from '@ant-design/pro-components'; | |||
import { ConfigProvider, Button, Flex, Input, Space, Image, Select, Row, Col, Carousel, Card, List, Tag, Typography, Tabs, Segmented, Anchor, Modal } from 'antd'; | |||
import { ConfigProvider, Button, Flex, Input, Space, Image, Select, Row, Col, Carousel, Card, List, Tag, Typography, Divider, Segmented, Anchor, Modal } from 'antd'; | |||
import { SearchOutlined, EllipsisOutlined, ArrowRightOutlined, EnvironmentOutlined, CaretUpOutlined, RightOutlined } from '@ant-design/icons'; | |||
import { useModel, connect, history, Link } from 'umi'; | |||
@@ -52,7 +52,7 @@ const HomePage: React.FC = ({ dispatch, dictModel }: any) => { | |||
setLoginHeight(value) | |||
} | |||
@@ -161,8 +161,8 @@ const HomePage: React.FC = ({ dispatch, dictModel }: any) => { | |||
</PageContainer> | |||
{/* 未登录的登录页 */} | |||
<Flex vertical justify='center' align='center' style={{ width: '100%', marginBottom: 40, position: 'relative' }}> | |||
<Flex vertical justify='center' align='center' style={{ background: '#ffffff', padding: '40px 314px', width: '100%' }}> | |||
<Flex vertical justify='center' align='center' style={{ width: '100%', marginBottom: 40, position: 'relative' }}> | |||
<Flex vertical justify='center' align='center' style={{ background: '#ffffff', padding: '0 314px 40px', width: '100%' }}> | |||
<Flex justify='space-bewteen' style={{ width: '100%' }}> | |||
<Row gutter={[16, 16]}> | |||
<Col span={16}> | |||
@@ -184,50 +184,52 @@ const HomePage: React.FC = ({ dispatch, dictModel }: any) => { | |||
</Flex> | |||
</div> */} | |||
</Flex> | |||
<Space direction='vertical' size={30} style={{ minHeight: 800 }}> | |||
<Flex justify='center' align='center' id='fomaus' style={{ padding: '40px 314px', width: '100%' }}> | |||
<HomeFamous></HomeFamous> | |||
</Flex> | |||
<Flex justify='center' align='center' id='company' style={{ padding: '40px 314px', width: '100%' }}> | |||
<HomeCompany></HomeCompany> | |||
</Flex> | |||
<Flex justify='center' align='center' style={{ padding: '40px 314px', width: '100%' }} id='newjob'> | |||
<Flex justify='space-between' align='center' style={{ width: '100%' }}> | |||
<Space direction='vertical' size='small' style={{ width: '100%' }} > | |||
<Segmented | |||
size='large' | |||
block | |||
value={positionType} | |||
options={['热门职位', '急招职位', '高薪职位']} | |||
onChange={(value) => { | |||
setPositionType(value) | |||
}} | |||
/> | |||
<div style={{ paddingTop: 20 }}> | |||
{positionType == '热门职位' && <><HomeNewJob></HomeNewJob></>} | |||
{positionType == '急招职位' && <><HomeUrgentJob></HomeUrgentJob></>} | |||
{positionType == '高薪职位' && <><HomeHighJob></HomeHighJob></>} | |||
</div> | |||
</Space> | |||
</Flex> | |||
</Flex> | |||
<Flex justify='center' align='center' id='campusjob' style={{ padding: '40px 314px', width: '100%' }}> | |||
<HomeCampusJob></HomeCampusJob> | |||
</Flex> | |||
<Flex justify='center' align='center' id='fair' style={{ padding: '40px 314px', width: '100%' }}> | |||
<TalentHomeFair></TalentHomeFair> | |||
</Flex> | |||
<Flex justify='center' align='center' id='probation' style={{ padding: '40px 314px', width: '100%' }}> | |||
<HomeProbation></HomeProbation> | |||
</Flex> | |||
</Space> | |||
<PageContainer | |||
header={{ title: ' ' }} | |||
header={{ title: '', }} | |||
style={{ paddingTop: 0 }} | |||
> | |||
<Space direction='vertical' size={30} style={{ minHeight: 800 }}> | |||
<Flex justify='center' align='center' id='fomaus' style={{ width: '100%' }}> | |||
<HomeFamous></HomeFamous> | |||
</Flex> | |||
<Flex justify='center' align='center' id='company' style={{ width: '100%' }}> | |||
<HomeCompany></HomeCompany> | |||
</Flex> | |||
<Divider orientation="left" orientationMargin="0"><Typography.Title level={2}>职位推荐</Typography.Title></Divider> | |||
<Flex justify='center' align='center' style={{ width: '100%' }} id='newjob'> | |||
<Flex justify='space-between' align='center' style={{ width: '100%' }}> | |||
<Space direction='vertical' size='small' style={{ width: '100%' }} > | |||
<Segmented | |||
size='large' | |||
block | |||
value={positionType} | |||
options={['热门职位', '急招职位', '高薪职位']} | |||
onChange={(value) => { | |||
setPositionType(value) | |||
}} | |||
/> | |||
<div style={{ paddingTop: 20 }}> | |||
{positionType == '热门职位' && <><HomeNewJob></HomeNewJob></>} | |||
{positionType == '急招职位' && <><HomeUrgentJob></HomeUrgentJob></>} | |||
{positionType == '高薪职位' && <><HomeHighJob></HomeHighJob></>} | |||
</div> | |||
</Space> | |||
</Flex> | |||
</Flex> | |||
<Flex justify='center' align='center' id='campusjob' style={{ width: '100%' }}> | |||
<HomeCampusJob></HomeCampusJob> | |||
</Flex> | |||
<Flex justify='center' align='center' id='fair' style={{ width: '100%' }}> | |||
<TalentHomeFair></TalentHomeFair> | |||
</Flex> | |||
<Flex justify='center' align='center' id='probation' style={{ width: '100%' }}> | |||
<HomeProbation></HomeProbation> | |||
</Flex> | |||
</Space> | |||
{/* <Space direction='vertical' size={60} style={{ marginTop: 40 }}> | |||
<div style={{ position: 'relative', width: '100%', height: 480, borderRadius: 8, background: '#00574B', zIndex: '99', }}> | |||
<div style={{ position: 'absolute', top: 0, right: 0, bottom: 0, left: 0, clipPath: 'circle(50% at right bottom)', backgroundImage: `url(${require('../../../../public/images/kcy.png')})`, backgroundSize: '100% 480px' }}> |
@@ -43,7 +43,7 @@ const HomePage: React.FC = () => { | |||
const getSearchParams = async (value) => { | |||
setPage(value.page) | |||
setPageSize(value.pagesize) | |||
let res = await PostCompanySearch(value ? value : { | |||
page: page, | |||
@@ -77,7 +77,7 @@ const HomePage: React.FC = () => { | |||
<Space direction='vertical' size={30} style={{ minHeight: '800px' }}> | |||
<SearchFilter getSearchParams={getSearchParams} | |||
famous={searchParams.get('famous') ? searchParams.get('famous') : 0} | |||
probation={searchParams.get('probation') ? searchParams.get('probation') : 0} | |||
page={page} | |||
@@ -90,18 +90,23 @@ const HomePage: React.FC = () => { | |||
<> | |||
<Col span={8}> | |||
<Link to={{ pathname: `/talent/company/detail?id=${item.id}` }} target="_blank" style={{ width: '100%' }}> | |||
<Space direction='vertical' size={10} align='center' style={{ width: '100%', paddingTop: 20, paddingBottom: 20, background: '#ffffff', borderRadius: 8 }}> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} preview={false} width={'140px'} height={'78px'} style={{ borderRadius: '8px' }}></Image> | |||
<Typography.Title level={5} style={{ width: '100%', padding: '0 10px' }} | |||
<Flex vertical align='center' justify='center' className='company-item'> | |||
<Image src={item.photo ? `${Imageprefix}${item.photo}` : '/images/logo.jpg'} preview={false} width={100} height={100} style={{ borderRadius: '4px', objectFit: 'contain' }}></Image> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 16, textAlign: 'center', whiteSpace: 'nowrap', marginTop: 8, width: '100%' }} | |||
> | |||
{item.full_name} | |||
</Typography.Title> | |||
<Flex justify='flex-end' align='center' style={{ fontSize: 14, color: '#999' }}> | |||
{item.company_nature ? <>{item.company_nature}</> : <>性质不限</>} | |||
{item.industry_text ? <><Divider type='vertical' /> {item.industry_text} </> : <><Divider type='vertical' />行业不限</>} | |||
{item.company_scale ? <><Divider type='vertical' /> {item.company_scale} </> : <><Divider type='vertical' />规模不限</>} | |||
</Flex> | |||
</Space> | |||
</Typography.Paragraph> | |||
<Typography.Paragraph | |||
ellipsis={{ rows: 1 }} | |||
style={{ fontSize: 12, color: '#999', textAlign: 'center', whiteSpace: 'nowrap', width: '100%' }} | |||
> | |||
{item.nature_text ? item.nature_text : '性质不限'} | |||
{item.industry_text ? <><Divider type='vertical' />{item.industry_text}</> : <><Divider type='vertical' />行业不限</>} | |||
{item.scale_text ? <><Divider type='vertical' />{item.scale_text}</> : <><Divider type='vertical' />规模不限</>} | |||
</Typography.Paragraph> | |||
</Flex > | |||
</Link> | |||
</Col> |