| @@ -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> | |||