Browse Source

deploy

master
Soleilw 1 month ago
parent
commit
76d6e0bad4

+ 1
- 1
dist/index.html View File

</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
<script src="/umi.053d2904.js"></script>
<script src="/umi.c3114048.js"></script>
</body> </body>
</html> </html>

dist/p__Manage__Company__Department__index.f487faef.async.js
File diff suppressed because it is too large
View File


+ 1
- 0
dist/p__Manage__Company__Home__index.9a778df9.async.js
File diff suppressed because it is too large
View File


+ 0
- 1
dist/p__Manage__Company__Home__index.ac1e4d47.async.js
File diff suppressed because it is too large
View File


+ 1
- 0
dist/p__Manage__Company__Info__index.12a52e30.async.js
File diff suppressed because it is too large
View File


+ 0
- 1
dist/p__Manage__Company__Info__index.b04bdc0f.async.js
File diff suppressed because it is too large
View File


+ 0
- 1
dist/p__Manage__Company__Post__index.1a08bb1d.async.js
File diff suppressed because it is too large
View File


+ 1
- 0
dist/p__Manage__Company__Post__index.5d839f99.async.js
File diff suppressed because it is too large
View File


+ 1
- 0
dist/p__Manage__Company__Recommend__index.102c49e5.async.js
File diff suppressed because it is too large
View File


+ 0
- 1
dist/p__Manage__Company__Recommend__index.dee7310a.async.js
File diff suppressed because it is too large
View File


dist/p__Manage__Company__Resume__index.79d9ba9c.async.js
File diff suppressed because it is too large
View File


dist/umi.c3114048.js
File diff suppressed because it is too large
View File


+ 14
- 8
src/app.tsx View File

import { HomeOutlined, LogoutOutlined, FileTextOutlined } from '@ant-design/icons'; import { HomeOutlined, LogoutOutlined, FileTextOutlined } from '@ant-design/icons';
import { baseUrl } from './constants/index' import { baseUrl } from './constants/index'
import routes from '../config/routes' import routes from '../config/routes'
import { history, useModel } from '@umijs/max';
import { history, useModel, Link } from '@umijs/max';
import { filterRoutesByAccess, findAccessIndex } from './utils/RouteHelper' import { filterRoutesByAccess, findAccessIndex } from './utils/RouteHelper'


import LoginIndex from '@/components/Login/Index/index' import LoginIndex from '@/components/Login/Index/index'
headerTitleRender: (logo, title, props) => { headerTitleRender: (logo, title, props) => {
return ( return (
<> <>
<a href="/talent/home">
<Flex align='center' >
{logo}
<div style={{ margin: '0 40px 0 8px', fontSize: 18, color: '#000000' }}>菊城人才网</div>
</Flex>
</a>
<div style={{cursor: 'pointer'}} onClick={() => {
localStorage.setItem('role', 'common')
history.replace('/talent/home');
window.location.reload()
}
}>
<Flex align='center' >
{logo}
<div style={{ margin: '0 40px 0 8px', fontSize: 18, color: '#000000' }}>菊城人才网</div>
</Flex>
</div>

</> </>
); );
}, },
}, },
menuDataRender: () => { menuDataRender: () => {
if (localStorage.getItem('path') == '/talent/search/job' || if (localStorage.getItem('path') == '/talent/search/job' ||
localStorage.getItem('path') == '/talent/search/company' ||
localStorage.getItem('path') == '/talent/search/company' ||
localStorage.getItem('path') == '/talent/home' || localStorage.getItem('path') == '/talent/home' ||
localStorage.getItem('path') == '/talent/fair' || localStorage.getItem('path') == '/talent/fair' ||
localStorage.getItem('path') == '/talent/information' || localStorage.getItem('path') == '/talent/information' ||

+ 64
- 95
src/components/Common/Jobseeker/index.tsx View File

import { useState, useEffect, useRef } from 'react'; import { useState, useEffect, useRef } from 'react';
import { ProTable, PageContainer, EditableProTable, ProList } from '@ant-design/pro-components'; import { ProTable, PageContainer, EditableProTable, ProList } from '@ant-design/pro-components';
import type { ActionType, EditableFormInstance } from '@ant-design/pro-components'; import type { ActionType, EditableFormInstance } from '@ant-design/pro-components';
import { ConfigProvider, Button, Popconfirm, Card, Space, Tabs, Avatar, Tag, Col, Descriptions, Statistic, Divider, Pagination, Anchor } from 'antd';
import { ConfigProvider, Button, Popconfirm, Card, Space, Row, Avatar,Flex, Tag, Col, Descriptions, Statistic, Divider, Pagination, Anchor } from 'antd';
import { SearchOutlined, LikeOutlined, ArrowRightOutlined, StarOutlined } from '@ant-design/icons'; import { SearchOutlined, LikeOutlined, ArrowRightOutlined, StarOutlined } from '@ant-design/icons';
import { useModel, connect, history, Link } from 'umi'; import { useModel, connect, history, Link } from 'umi';
import { Imageprefix } from '@/constants/index' import { Imageprefix } from '@/constants/index'
}} }}
> >
<div style={{ minHeight: '800px' }}> <div style={{ minHeight: '800px' }}>
<ProList
actionRef={actionRef}
headerTitle={type}
rowKey="id"
dataSource={list}
<Row gutter={[20, 20]}>
{
list.length > 0 && list.map((item: any, index: number) => (
<>
<Col span={24}>
<Link to={{ pathname: `/talent/resume/detail?id=${item.customer_id}` }} target="_blank" style={{ color: '#000000' }}>
<Space direction='vertical' style={{ background: '#ffffff', padding: '20px', width: '100%', borderRadius: 10, cursor: 'pointer' }}>
<Space size={10} align='start'>
<Flex justify='center' align='center' style={{ width: 88 }}>
<Space direction='vertical' align='center'>
<Avatar size={68} src={item.photo ? `${Imageprefix}${item.photo}` : '/images/onlylogo.jpg'} />
<Tag color='#19be6e'> {item.salary_range_txt}</Tag>
</Space>
</Flex>
<Space direction='vertical' >
<Space align='center'>
<div style={{ fontWeight: 'bold', fontSize: 18 }}>{item.seekername}</div>


showActions="hover"
metas={{
title: {
render: (text, row) => (
<>
<Link to={{ pathname: `/talent/resume/detail?id=${row.customer_id}` }} style={{ color: '#000000', fontSize: 16, fontWeight: 'bold' }}>
{row.seekername}
</Link>
</>
)
},
avatar: {
render: (text, row) => (
<Avatar size={48} src={row.photo ? `${Imageprefix}${row.photo}` : '/images/onlylogo.jpg'} />
)
},
subTitle: {
render: (text, row) => {
return (
<Space size={0}>
{
row.age && <><Tag color="#cccccc">{row.age}岁</Tag></>
}
{
row.gender && row.gender == '男' && <><Tag color="blue">{row.gender}</Tag></>
}
{
row.gender && row.gender == '女' && <><Tag color="pink">{row.gender}</Tag></>
}
{
row.education_txt && row.education_txt != 0 && <><Tag color="#19be6e">{row.education_txt}</Tag></>
}
{
row.work_experience_txt && row.work_experience_txt != 0 && <> <Tag color="#5BD8A6">工作经验:{row.work_experience_txt}年</Tag></>
}
{
item.age && <><Tag >{item.age}岁</Tag></>
}
{
item.gender && item.gender == '男' && <><Tag color="blue">{item.gender}</Tag></>
}
{
item.gender && item.gender == '女' && <><Tag color="pink">{item.gender}</Tag></>
}
</Space>
<Space>
<div>
{
item.education_txt && item.education_txt != 0 && <>{item.education_txt}</>
}
</div>
<div>
{
item.work_experience && item.work_experience != 0 && <> <Divider type='vertical'></Divider> 工作经验:{item.work_experience}年</>
}
</div>
</Space>
<Descriptions size='small' style={{ width: '100%' }}>
<Descriptions.Item label="求职期望" span={24}> {item.other_positions}{
item.desire_positions && item.desire_positions.length > 0 && <>{item.desire_positions[0].name}</>
}</Descriptions.Item>
<Descriptions.Item label="个人简介" span={24}>{
item.introduction ? <><div style={{ lineHeight: 1.5 }} dangerouslySetInnerHTML={{
__html: item?.introduction
}} ></div></>
: <><div style={{ lineHeight: 1.5 }} >无</div></>
}</Descriptions.Item>


</Space>
);
},
},
description: {
dataIndex: 'introduction'
},
// actions: {
// render: () => [<StarOutlined />]
// },
}}
/>
</div>
</Descriptions>
</Space>


</Space>


{/* <ProTable
headerTitle="推荐简历"
actionRef={actionRef}
dataSource={list}
rowKey="id"
loading={false}
search={false}
columns={[
{
title: '求职者',
dataIndex: 'content'
},
{
title: '放入时间',
dataIndex: 'content'
},
{
title: '操作',
valueType: 'option',
render: (text, record, _, action) => [
<Popconfirm
title="是否删除"
onConfirm={(e) => {
// PostJobapplicantDelintro({ id: record.id }).then(res => {
// message.success('删除成功')
// actionRef.current.reload();
// })
}}
okText="删除"
cancelText="取消"
>
<a
key="delete"
>
恢复
</a>
</Popconfirm>
</Space>
</Link >


],
},
]}
/> */}
</Col >
</>
))
}
</Row >
</div>




</ConfigProvider > </ConfigProvider >
</> </>

+ 1
- 1
src/components/Manage/Company/Resume/Contact/index.tsx View File

setTotal(res.data.total) setTotal(res.data.total)
}) })
} }
headerTitle="已查看简历"
headerTitle="已获取联系方式"
/> />
</ConfigProvider > </ConfigProvider >
</> </>

+ 94
- 110
src/components/Manage/Company/Resume/Recomment/index.tsx View File

import { useState, useEffect, useRef } from 'react'; import { useState, useEffect, useRef } from 'react';
import { ProTable, PageContainer, EditableProTable, ProList } from '@ant-design/pro-components'; import { ProTable, PageContainer, EditableProTable, ProList } from '@ant-design/pro-components';
import type { ActionType, EditableFormInstance } from '@ant-design/pro-components'; import type { ActionType, EditableFormInstance } from '@ant-design/pro-components';
import { ConfigProvider, Button, Popconfirm, Card, Space, Tabs, Avatar, Tag, Col, Descriptions, Statistic, Divider, Pagination, Anchor } from 'antd';
import { SearchOutlined, LikeOutlined, ArrowRightOutlined, StarOutlined } from '@ant-design/icons';
import { ConfigProvider, Button, Popconfirm, Card, Space, Tabs, Avatar, Tag, Col, Row, Flex, Descriptions, Pagination, Divider } from 'antd';
import { SearchOutlined, LikeOutlined, EnvironmentOutlined, FieldTimeOutlined } from '@ant-design/icons';
import { useModel, connect, history, Link } from 'umi'; import { useModel, connect, history, Link } from 'umi';
import { Imageprefix } from '@/constants/index' import { Imageprefix } from '@/constants/index'


import { GetCompanyRecommentResume } from '@/services/apis/company'; import { GetCompanyRecommentResume } from '@/services/apis/company';
import EmptyResult from '@/components/Common/EmptyResult'




const HomePage: React.FC = () => { const HomePage: React.FC = () => {
const [pageSize, setPageSize] = useState<number>(10) const [pageSize, setPageSize] = useState<number>(10)
const [total, setTotal] = useState<number>(0) const [total, setTotal] = useState<number>(0)



useEffect(() => {
GetCompanyRecommentResume({ page: 1, pagesize: 10, sortby: 'desc' }).then(res => {
setList(res.data.list)
setTotal(res.data.total)
})
}, []);

return ( return (
<> <>
<ConfigProvider <ConfigProvider


}} }}
> >
<div style={{ minHeight: '800px' }}>
<ProList
actionRef={actionRef}
headerTitle="推荐简历"
rowKey="id"
dataSource={list}
request={async (params = {} as Record<string, any>) =>
GetCompanyRecommentResume({
page: page,
pagesize: pageSize,
sort: 'id',
sortby: 'desc',
}).then((res: any) => {

<Row gutter={[20, 20]}>
{
list.length > 0 && list.map((item: any, index: number) => (
<>
<Col span={24}>
<Link to={{ pathname: `/talent/resume/detail?id=${item.customer_id}` }} target="_blank" style={{ color: '#000000' }}>
<Space direction='vertical' style={{ background: '#ffffff', padding: '20px', width: '100%', borderRadius: 10, cursor: 'pointer' }}>
<Space size={10} align='start'>
<Flex justify='center' align='center' style={{ width: 88 }}>
<Space direction='vertical' align='center'>
<Avatar size={68} src={item.photo ? `${Imageprefix}${item.photo}` : '/images/onlylogo.jpg'} />
<Tag color='#19be6e'> {item.salary_range_txt}</Tag>
</Space>
</Flex>
<Space direction='vertical' >
<Space align='center'>
<div style={{ fontWeight: 'bold', fontSize: 18 }}>{item.seekername}</div>

{
item.age && <><Tag >{item.age}岁</Tag></>
}
{
item.gender && item.gender == '男' && <><Tag color="blue">{item.gender}</Tag></>
}
{
item.gender && item.gender == '女' && <><Tag color="pink">{item.gender}</Tag></>
}
</Space>
<Space>
<div>
{
item.education_text && item.education_text != 0 && <>{item.education_text}</>
}
</div>
{
item.work_experience && item.work_experience != 0 ? <><div> <Divider type='vertical'></Divider> 工作经验:{item.work_experience}年</div></> : ''
}

</Space>
<Descriptions size='small' style={{ width: '100%' }}>
<Descriptions.Item label="求职期望" span={24}> {item.other_positions}{
item.desire_positions && item.desire_positions.length > 0 && <>{item.desire_positions[0].name}</>
}</Descriptions.Item>
<Descriptions.Item label="个人简介" span={24}>{
item.introduction ? <><div style={{ lineHeight: 1.5 }} dangerouslySetInnerHTML={{
__html: item?.introduction
}} ></div></>
: <><div style={{ lineHeight: 1.5 }} >无</div></>
}</Descriptions.Item>

</Descriptions>
</Space>

</Space>

</Space>
</Link >

</Col >
</>
))
}
</Row >
{
!list || list.length == 0 && <EmptyResult description="没有找到符合条件的简历" />
}

<Flex justify='center' align='center' style={{ margin: '40px 0' }}>
<Pagination
hideOnSinglePage
total={total}
showTotal={(total) => `总共${total}条`}
current={page}
pageSize={pageSize}
pageSizeOptions={['12', '24', '36']}
onChange={(page, pageSize) => {
setPage(page)
setPageSize(pageSize)
GetCompanyRecommentResume({ page: page, pagesize: pageSize, sortby: 'desc' }).then(res => {
setList(res.data.list) setList(res.data.list)
setTotal(res.data.total) setTotal(res.data.total)
}) })
}
pagination={{
current: page,
pageSize: pageSize,
total: total,
hideOnSinglePage: true,
align: 'center',
onChange(page, pageSize) {
setPage(page)
setPageSize(pageSize)
},
onShowSizeChange(current, size) {
setPage(current)
setPageSize(size)
}
}}
showActions="hover"
metas={{
title: {
render: (text, row) => (
<>
<Link to={{ pathname: `/talent/resume/detail?id=${row.customer_id}` }} style={{ color: '#000000', fontSize: 16, fontWeight: 'bold' }}>
{row.seekername}
</Link>
</>
)
},
avatar: {
render: (text, row) => (
<Avatar size={48} src={row.photo ? `${Imageprefix}${row.photo}` : '/images/onlylogo.jpg'} />
)
},
subTitle: {
render: (text, row) => {
return (
<Space size={0}>
<Tag color="#5BD8A6">{row.age}岁</Tag>
<Tag color="blue">{row.gender}</Tag>
<Tag color="#5BD8A6">{row.education_text}</Tag>
<Tag color="#5BD8A6">工作经验:{row.work_experience}年</Tag>
</Space>
);
},
},
description: {
dataIndex: 'introduction'
},
// actions: {
// render: () => [<StarOutlined />]
// },
}} }}
/> />
</div>


{/* <ProTable
headerTitle="推荐简历"
actionRef={actionRef}
dataSource={list}
rowKey="id"
loading={false}
search={false}
columns={[
{
title: '求职者',
dataIndex: 'content'
},
{
title: '放入时间',
dataIndex: 'content'
},
{
title: '操作',
valueType: 'option',
render: (text, record, _, action) => [
<Popconfirm
title="是否删除"
onConfirm={(e) => {
// PostJobapplicantDelintro({ id: record.id }).then(res => {
// message.success('删除成功')
// actionRef.current.reload();
// })
}}
okText="删除"
cancelText="取消"
>
<a
key="delete"
>
恢复
</a>
</Popconfirm>

],
},
]}
/> */}
</Flex>




</ConfigProvider > </ConfigProvider >
</> </>

+ 1
- 1
src/components/Manage/Company/Resume/Recycle/index.tsx View File

setTotal(res.data.total) setTotal(res.data.total)
}) })
} }
headerTitle="待看简历"
headerTitle="回收站"
/> />
</ConfigProvider > </ConfigProvider >
</> </>

+ 1
- 1
src/components/Manage/Company/Resume/Talent/index.tsx View File

setTotal(res.data.total) setTotal(res.data.total)
}) })
} }
headerTitle="待看简历"
headerTitle="人才库"
/> />
</ConfigProvider > </ConfigProvider >
</> </>

+ 2
- 2
src/pages/Manage/Company/Department/index.tsx View File

cardActionProps: 'actions', cardActionProps: 'actions',
render: (text, row) => [<> render: (text, row) => [<>
<div style={{ width: '100%', display: 'flex', justifyContent: 'space-around' }}> <div style={{ width: '100%', display: 'flex', justifyContent: 'space-around' }}>
<Button size='small' onClick={async () => {
<Button onClick={async () => {
setDetail(row) setDetail(row)
setOpenPreview(true); setOpenPreview(true);
}}>编辑</Button>, }}>编辑</Button>,
<Button size='small' onClick={() => {
<Button onClick={() => {
Modal.confirm({ Modal.confirm({
title: '删除部门', title: '删除部门',
content: '确定删除部门吗?', content: '确定删除部门吗?',

+ 2
- 2
src/pages/Manage/Company/Home/index.tsx View File

title={<Link to={{ pathname: `/talent/company/detail?id=${localStorage.getItem('companyid')}` }} target="_blank" style={{ color: '#000000', fontSize: 16, marginRight: 10 }}> title={<Link to={{ pathname: `/talent/company/detail?id=${localStorage.getItem('companyid')}` }} target="_blank" style={{ color: '#000000', fontSize: 16, marginRight: 10 }}>
{detail.full_name} {detail.full_name}
</Link>} </Link>}
extra={<Link to={{ pathname: `/manage/company/info` }} style={{ color: '#19be6e', fontSize: 14, marginRight: 10 }}>
编辑资料
extra={<Link to={{ pathname: `/manage/company/info` }} style={{ color: '#19be6e', fontSize: 14, marginRight: 10 }}>
<Button >编辑资料</Button>
</Link>} </Link>}
style={{ boxShadow: '0 8px 20px #f0f0f0' }}> style={{ boxShadow: '0 8px 20px #f0f0f0' }}>
<Space direction='vertical' style={{ borderRadius: 10, width: '100%' }}> <Space direction='vertical' style={{ borderRadius: 10, width: '100%' }}>

+ 103
- 87
src/pages/Manage/Company/Info/index.tsx View File

import { useState, useEffect, useRef } from 'react'; import { useState, useEffect, useRef } from 'react';
import { Link } from '@umijs/max'; import { Link } from '@umijs/max';
import { HomeOutlined, FormOutlined, CameraOutlined } from '@ant-design/icons' import { HomeOutlined, FormOutlined, CameraOutlined } from '@ant-design/icons'
import { Space, Tabs, Button, Avatar, Row, Col, Image, Flex, Card, Descriptions, Modal } from 'antd';
import { Space, Tabs, Button, Avatar, Row, Col, Image, Flex, Card, Descriptions, Modal, ConfigProvider } from 'antd';
import { Imageprefix } from '@/constants/index' import { Imageprefix } from '@/constants/index'






return ( return (
<> <>
<Space direction='vertical' size={30} style={{minHeight: '800px'}}>
{/* 头部 */}
<Space direction='vertical' size={20} style={{ width: '100%', backgroundColor: '#fff', borderRadius: 8, padding: 20 }}>
<Space>
<Flex justify="center" align='flex-end' onClick={() => { setOpenPhotoPreview(true) }}>
<Avatar size={88} src={Imageprefix + detail.photo} shape='square' /><CameraOutlined />
</Flex>
<Flex justify="center" align="center">
<Flex justify="center" align='center' onClick={() => { setOpenPreview(true) }}>
<h1>{detail.full_name}</h1><FormOutlined />
<ConfigProvider
theme={{
token: {
colorPrimary: '#19be6e',
},
components: {
Button: {
colorText: '#19be6e'
},
}

}}
>

<Space direction='vertical' size={30} style={{ minHeight: '800px' }}>
{/* 头部 */}
<Space direction='vertical' size={20} style={{ width: '100%', backgroundColor: '#fff', borderRadius: 8, padding: 20 }}>
<Space>
<Flex justify="center" align='flex-end' onClick={() => { setOpenPhotoPreview(true) }}>
<Avatar size={88} src={Imageprefix + detail.photo} shape='square' /><CameraOutlined style={{ color: '#19be6e', fontSize: 20 }} />
</Flex> </Flex>
</Flex>
<Flex justify="center" align="center">
<Flex justify="center" align='center' onClick={() => { setOpenPreview(true) }}>
<h1>{detail.full_name}</h1><FormOutlined style={{ color: '#19be6e', fontSize: 20 }} />
</Flex>
</Flex>
</Space>
<Descriptions style={{ width: '100%' }}>
<Descriptions.Item label="社会统一信用代码">{detail.registration_number}</Descriptions.Item>
<Descriptions.Item label="注册时间">{detail.establishment_date}</Descriptions.Item>
<Descriptions.Item label="手机号">{detail.mobile}</Descriptions.Item>
<Descriptions.Item label="联系固话">{detail.phone}</Descriptions.Item>
<Descriptions.Item label="联系人">{detail.contact}</Descriptions.Item>
<Descriptions.Item label="地址">{detail.address}</Descriptions.Item>
<Descriptions.Item label="企业官网">{detail.website}</Descriptions.Item>
<Descriptions.Item label="所属行业">{detail.industry_text}{detail.industry2_text}</Descriptions.Item>
<Descriptions.Item label="企业性质">{detail.nature_text}</Descriptions.Item>
<Descriptions.Item label="企业规模">{detail.scale_text}</Descriptions.Item>
<Descriptions.Item label="企业介绍">
<div dangerouslySetInnerHTML={{
__html: detail?.introduction
}} ></div>
</Descriptions.Item>
</Descriptions>
</Space> </Space>
<Descriptions style={{ width: '100%' }}>
<Descriptions.Item label="社会统一信用代码">{detail.registration_number}</Descriptions.Item>
<Descriptions.Item label="注册时间">{detail.establishment_date}</Descriptions.Item>
<Descriptions.Item label="手机号">{detail.mobile}</Descriptions.Item>
<Descriptions.Item label="联系固话">{detail.phone}</Descriptions.Item>
<Descriptions.Item label="联系人">{detail.contact}</Descriptions.Item>
<Descriptions.Item label="地址">{detail.address}</Descriptions.Item>
<Descriptions.Item label="企业官网">{detail.website}</Descriptions.Item>
<Descriptions.Item label="所属行业">{detail.industry_text}{detail.industry2_text}</Descriptions.Item>
<Descriptions.Item label="企业性质">{detail.nature_text}</Descriptions.Item>
<Descriptions.Item label="企业规模">{detail.scale_text}</Descriptions.Item>
<Descriptions.Item label="企业介绍">
<div dangerouslySetInnerHTML={{
__html: detail?.introduction
}} ></div>
</Descriptions.Item>
</Descriptions>
<Row gutter={[16, 16]}>
<Col span={12}>
<Card title="企业Logo" extra={<Button onClick={() => { setOpenPhotoPreview(true) }}>编辑</Button>}>
<Image src={Imageprefix + detail.photo} width={200} height={200} />
</Card>
</Col>
<Col span={12}>
<Card title="营业执照" extra={<Button onClick={() => { setOpenLicensePreview(true) }}>编辑</Button>}>
<Image src={Imageprefix + detail.license_path} width={200} height={200} />
</Card>
</Col>
</Row>
</Space> </Space>
<Row gutter={[16, 16]}>
<Col span={12}>
<Card title="企业Logo" extra={<Button type='text' onClick={() => { setOpenPhotoPreview(true) }}>编辑</Button>}>
<Image src={Imageprefix + detail.photo} width={200} height={200} />
</Card>
</Col>
<Col span={12}>
<Card title="营业执照" extra={<Button type='text' onClick={() => { setOpenLicensePreview(true) }}>编辑</Button>}>
<Image src={Imageprefix + detail.license_path} width={200} height={200} />
</Card>
</Col>
</Row>
</Space>

<Modal
open={openPreview}
title='编辑企业信息'
centered
maskClosable={false}
footer={null}
destroyOnClose
width={1000}
onCancel={() => {
setOpenPreview(false)
}}
>
<ManageCompanyInfoBasic detail={detail} closeModel={closeModel}></ManageCompanyInfoBasic>
</Modal>
{/* 企业Logo */}
<Modal
open={openPhotoPreview}
title='上传企业Logo'
centered
maskClosable={false}
footer={null}
destroyOnClose
width={1000}
onCancel={() => {
setOpenPhotoPreview(false)
}}
>
<ManageCompanyInfoPhoto detail={detail} closeModel={closePhotoModel}></ManageCompanyInfoPhoto>
</Modal>
{/* 企业营业执照 */}
<Modal
open={openLicensePreview}
title='上传营业执照'
centered
maskClosable={false}
footer={null}
destroyOnClose
width={1000}
onCancel={() => {
setOpenLicensePreview(false)
}}
>
<ManageCompanyInfoLicense detail={detail} closeModel={closeLicenseModel}></ManageCompanyInfoLicense>
</Modal>

<Modal
open={openPreview}
title='编辑企业信息'
centered
maskClosable={false}
footer={null}
destroyOnClose
width={1000}
onCancel={() => {
setOpenPreview(false)
}}
>
<ManageCompanyInfoBasic detail={detail} closeModel={closeModel}></ManageCompanyInfoBasic>
</Modal>
{/* 企业Logo */}
<Modal
open={openPhotoPreview}
title='上传企业Logo'
centered
maskClosable={false}
footer={null}
destroyOnClose
width={1000}
onCancel={() => {
setOpenPhotoPreview(false)
}}
>
<ManageCompanyInfoPhoto detail={detail} closeModel={closePhotoModel}></ManageCompanyInfoPhoto>
</Modal>
{/* 企业营业执照 */}
<Modal
open={openLicensePreview}
title='上传营业执照'
centered
maskClosable={false}
footer={null}
destroyOnClose
width={1000}
onCancel={() => {
setOpenLicensePreview(false)
}}
>
<ManageCompanyInfoLicense detail={detail} closeModel={closeLicenseModel}></ManageCompanyInfoLicense>
</Modal>
</ConfigProvider>

</> </>
); );
}; };

+ 32
- 16
src/pages/Manage/Company/Post/index.tsx View File

import { useState, useEffect, useRef } from 'react'; import { useState, useEffect, useRef } from 'react';
import type { ActionType, EditableFormInstance } from '@ant-design/pro-components'; import type { ActionType, EditableFormInstance } from '@ant-design/pro-components';
import { ProList, PageContainer } from '@ant-design/pro-components'; import { ProList, PageContainer } from '@ant-design/pro-components';
import { HomeOutlined, FormOutlined, FireOutlined } from '@ant-design/icons'
import { Space, Tabs, Button, Descriptions, Row, Col, Tag, Flex, Card, Pagination, Modal, ConfigProvider } from 'antd';
import { HomeOutlined, SearchOutlined, FireOutlined } from '@ant-design/icons'
import { Space, Tabs, Button, Descriptions, Row, Col, Tag, Flex, Card, Input, Modal, ConfigProvider } from 'antd';
import { Link } from '@umijs/max'; import { Link } from '@umijs/max';
import { Imageprefix } from '@/constants/index' import { Imageprefix } from '@/constants/index'


const ManegeJobseekerHome: React.FC = () => { const ManegeJobseekerHome: React.FC = () => {
const actionRef = useRef<ActionType>(); const actionRef = useRef<ActionType>();


const [statuslist, setStatuslist] = useState<object[]>([{ name: '发布中', id: '1' }, { name: '未发布', id: '2' }, { name: '已暂停', id: '3' }, { name: '已锁定', id: '4' }, { name: '回收站', id: '5' }, { name: '已过期', id: '6' }])
const [activeKey, setActiveKey] = useState<string>('1')
const [statuslist, setStatuslist] = useState<object[]>([{ name: '全部', id: '0' }, { name: '发布中', id: '1' }, { name: '未发布', id: '2' }, { name: '已暂停', id: '3' }, { name: '已锁定', id: '4' }, { name: '回收站', id: '5' }, { name: '已过期', id: '6' }])
const [activeKey, setActiveKey] = useState<string>('0')
const [list, setList] = useState<object[]>([]) const [list, setList] = useState<object[]>([])
const [total, setTotal] = useState<number>(0) const [total, setTotal] = useState<number>(0)
const [page, setPage] = useState<number>(1) const [page, setPage] = useState<number>(1)
const [pageSize, setPageSize] = useState<number>(12) const [pageSize, setPageSize] = useState<number>(12)
const [openPreview, setOpenPreview] = useState(false); const [openPreview, setOpenPreview] = useState(false);
const [detail, setDetail] = useState<any>({}); const [detail, setDetail] = useState<any>({});
const [keywordName, setKeywordName] = useState<string>('');




const closeModel = (value: boolean) => { const closeModel = (value: boolean) => {
pagesize: pageSize, pagesize: pageSize,
sort: 'id', sort: 'id',
sortby: 'desc', sortby: 'desc',
status: Number(activeKey)
status: Number(activeKey),
keyword: keywordName
}).then((res: any) => { }).then((res: any) => {
setList(res.data.list) setList(res.data.list)
setTotal(res.data.total) setTotal(res.data.total)
cardActionProps: 'actions', cardActionProps: 'actions',
render: (text, row) => [<> render: (text, row) => [<>
<div style={{ width: '100%', display: 'flex', justifyContent: 'space-around' }}> <div style={{ width: '100%', display: 'flex', justifyContent: 'space-around' }}>
<Button size='small' disabled={row.status == 4 || row.status == 5} onClick={async () => {
<Button type='primary' disabled={row.status == 4 || row.status == 5} onClick={async () => {
let res = await GetCompanyJobInfo({ id: row.id }) let res = await GetCompanyJobInfo({ id: row.id })
setDetail(res) setDetail(res)
setOpenPreview(true); setOpenPreview(true);
}}>编辑</Button> }}>编辑</Button>
<Button size='small' disabled={row.status == 3 || row.status == 4 || row.status == 5 || row.status == 6} onClick={() => {
<Button color="cyan" variant="solid" disabled={row.status == 3 || row.status == 4 || row.status == 5 || row.status == 6} onClick={() => {
Modal.confirm({ Modal.confirm({
title: '暂停招聘', title: '暂停招聘',
content: '确定暂停招聘吗?', content: '确定暂停招聘吗?',
centered: true centered: true
}); });
}}>暂停招聘</Button> }}>暂停招聘</Button>
<Button size='small' disabled={row.status === 1 || row.status == 4 || row.status == 5} onClick={() => {
<Button color="cyan" variant="solid" disabled={row.status === 1 || row.status == 4 || row.status == 5} onClick={() => {
Modal.confirm({ Modal.confirm({
title: '重新发布', title: '重新发布',
content: '确定重新发布吗?', content: '确定重新发布吗?',
centered: true centered: true
}); });
}} >重新发布</Button> }} >重新发布</Button>
<Button size='small' disabled={row.status === 5 || row.status == 4} onClick={() => {
<Button disabled={row.status === 5 || row.status == 4} onClick={() => {
Modal.confirm({ Modal.confirm({
title: '放入回收站', title: '放入回收站',
content: '确定放入回收站吗?', content: '确定放入回收站吗?',
centered: true centered: true
}); });
}} >放入回收站</Button> }} >放入回收站</Button>
<Button size='small' disabled={row.status === 1 || row.status === 3 || row.status === 2 || row.status == 4 || row.status == 6} onClick={() => {
<Button disabled={row.status === 1 || row.status === 3 || row.status === 2 || row.status == 4 || row.status == 6} onClick={() => {
Modal.confirm({ Modal.confirm({
title: '移出回收站', title: '移出回收站',
content: '确定移出回收站吗?', content: '确定移出回收站吗?',
centered: true centered: true
}); });
}} >移出回收站</Button> }} >移出回收站</Button>
<Button size='small' disabled={row.status == 4 || row.status == 5} onClick={() => {
<Button danger disabled={row.status == 4 || row.status == 5} onClick={() => {
Modal.confirm({ Modal.confirm({
title: '删除职位', title: '删除职位',
content: '确定删除职位吗?', content: '确定删除职位吗?',
onOk() { onOk() {
PostCompanyJobDel({ id: row.id }).then(res => { PostCompanyJobDel({ id: row.id }).then(res => {
actionRef.current?.reload() actionRef.current?.reload()

}) })
}, },
onCancel() { onCancel() {
> >


<Flex justify='flex-end' align='center'> <Flex justify='flex-end' align='center'>
<Button size='large' type='primary' onClick={() => {
setOpenPreview(true)
}}>发布一个职位</Button>
<Space>
<Space.Compact >
<Input
size='large'
prefix={<SearchOutlined style={{ color: '#19be6e' }} />}
placeholder="请输入关键词"
allowClear
value={keywordName}
onChange={(e) => {
setKeywordName(e.target.value)
}}
/>
<Button size='large' type='primary' style={{ width: 100 }} onClick={() => {actionRef.current?.reload() }}>搜索</Button>
</Space.Compact>
<Button size='large' type='primary' onClick={() => {
setOpenPreview(true)
}}>发布一个职位</Button>
</Space>
</Flex> </Flex>
<Space direction='vertical' size={30}> <Space direction='vertical' size={30}>
<Row gutter={[20, 20]}> <Row gutter={[20, 20]}>
</Space> </Space>
<Modal <Modal
open={openPreview} open={openPreview}
title='编辑简历信息'
title='职位信息'
centered centered
maskClosable={false} maskClosable={false}
footer={null} footer={null}

+ 2
- 2
src/pages/Manage/Company/Recommend/index.tsx View File

sortby: 'desc', sortby: 'desc',
type: 1001028 type: 1001028
}).then(res => { }).then(res => {
setList(res.data.seekers)
setList(res.data.seekers ? res.data.seekers : [])
getTotal(res.data.total) getTotal(res.data.total)
}) })


sort: 'updated_at', sort: 'updated_at',
sortby: 'desc' sortby: 'desc'
}) })
setList(res.data.seekers)
setList(res.data.seekers ? res.data.seekers : [])
getTotal(res.data.total) getTotal(res.data.total)
} }
} }

Loading…
Cancel
Save