feat: 更新企业内推岗位功能

- 删除岗位陪跑流程图标和弹窗组件
- 导入企业内推岗位库.json新数据源(39个岗位)
- 实现岗位按截止时间降序排序
- 添加过期岗位判断逻辑,过期岗位显示已过期且无法投递
- 更新岗位卡片显示截止时间格式(YYYY-MM-DD)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
KQL
2025-09-08 04:51:28 +08:00
parent 44a378b4ec
commit b424a1fd50
29 changed files with 1410 additions and 346 deletions

View File

@@ -169,6 +169,23 @@
background-size: 100% 100%;
margin-right: 5px;
}
&.disabled {
background-color: #f2f3f5;
color: #c9cdd4;
cursor: not-allowed;
pointer-events: none;
&:hover {
background-color: #f2f3f5;
box-shadow: none;
transform: none;
}
> i {
opacity: 0.5;
}
}
}
.company-jobs-info-deadline {

View File

@@ -32,6 +32,12 @@ export default ({ className = "", data = [], backgroundColor }) => {
const handleDeliverClick = async (e, item) => {
e.stopPropagation(); // 阻止冒泡到li的点击事件
// 检查岗位是否已过期
if (item.isExpired || item.status === 'expired') {
toast.error('该岗位已过期,无法投递');
return;
}
// 获取岗位详情然后打开投递弹窗
const res = await getJobsDetail(item.id);
if (res.success) {
@@ -147,11 +153,12 @@ export default ({ className = "", data = [], backgroundColor }) => {
{item?.salary}
</p>
<button
className="company-jobs-btn"
className={`company-jobs-btn ${(item.isExpired || item.status === 'expired') ? 'disabled' : ''}`}
onClick={(e) => handleDeliverClick(e, item)}
disabled={item.isExpired || item.status === 'expired'}
>
<i />
<span>投递</span>
<span>{(item.isExpired || item.status === 'expired') ? '已过期' : '投递'}</span>
</button>
{item?.deadline && (
<p className="company-jobs-info-deadline">

View File

@@ -17,7 +17,6 @@ const PAGE_SIZE = 10;
const CompanyJobsPage = () => {
const studentInfo = useSelector((state) => state.student.studentInfo);
const [isExpand, setIsExpand] = useState(false); // 是否展开
const [jobs, setJobs] = useState([]);
const [jobsListPage, setJobsListPage] = useState(1);
const [jobsListHasMore, setJobsListHasMore] = useState(true);
@@ -272,37 +271,6 @@ const CompanyJobsPage = () => {
</InfiniteScroll>
</div>
</div>
<div
onClick={() => setIsExpand(!isExpand)}
className={
isExpand
? "company-jobs-page-process-wrapper-expand"
: "company-jobs-page-process-wrapper-close"
}
>
<div className="company-jobs-page-process-wrapper-title">
岗位陪跑流程
</div>
<div className="company-jobs-page-process-content">
<div className="company-jobs-page-process-item-icon icon1">
<p>内推岗位简历投递</p>
</div>
<div className="company-jobs-page-process-item-round-dot icon2" />
<div className="company-jobs-page-process-item-icon icon3">
<p>岗位简历接收</p>
</div>
<div className="company-jobs-page-process-item-icon icon4">
<p>面试时间地点确定</p>
</div>
<div className="company-jobs-page-process-item-icon icon5">
<p>参与企业面试</p>
</div>
<div className="company-jobs-page-process-item-round-dot icon6" />
<div className="company-jobs-page-process-item-icon icon7">
<p>企业offer发送</p>
</div>
</div>
</div>
</>
)}
</div>