Compare commits
2 Commits
00e8cebfe3
...
7c9b9f88a8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7c9b9f88a8 | ||
|
|
8676f0fdde |
@@ -51,7 +51,9 @@
|
|||||||
"Bash(npm view:*)",
|
"Bash(npm view:*)",
|
||||||
"Bash(pnpm install:*)",
|
"Bash(pnpm install:*)",
|
||||||
"Bash(pnpm dev:*)",
|
"Bash(pnpm dev:*)",
|
||||||
"Bash(awk:*)"
|
"Bash(awk:*)",
|
||||||
|
"Bash(git clean:*)",
|
||||||
|
"Bash(xxd:*)"
|
||||||
],
|
],
|
||||||
"deny": [],
|
"deny": [],
|
||||||
"ask": []
|
"ask": []
|
||||||
|
|||||||
7757
src/data/calendarCourses.json
Normal file
7757
src/data/calendarCourses.json
Normal file
File diff suppressed because it is too large
Load Diff
1106
src/data/companyJobs.json
Normal file
1106
src/data/companyJobs.json
Normal file
File diff suppressed because it is too large
Load Diff
2576
src/data/mockData.js
2576
src/data/mockData.js
File diff suppressed because it is too large
Load Diff
@@ -57,14 +57,45 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.company-jobs-info-position {
|
.company-jobs-info-position-wrapper {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-jobs-info-position {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #1d2129;
|
color: #1d2129;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.company-jobs-info-category-tag {
|
||||||
|
padding: 2px 8px;
|
||||||
|
background: #4080ff;
|
||||||
|
color: #fff;
|
||||||
|
font-size: 11px;
|
||||||
|
font-weight: 600;
|
||||||
|
border-radius: 12px;
|
||||||
|
white-space: nowrap;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 根据岗位相关标签内容设置不同颜色 */
|
||||||
|
.company-jobs-info-category-tag[data-category="专业相关岗位"] {
|
||||||
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-jobs-info-category-tag[data-category="非专业相关岗位"] {
|
||||||
|
background: linear-gradient(135deg, #ff6b6b 0%, #feca57 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.company-jobs-info-category-tag[data-category="人才出海岗位"] {
|
||||||
|
background: linear-gradient(135deg, #00d2ff 0%, #3a7bd5 100%);
|
||||||
|
}
|
||||||
|
|
||||||
.company-jobs-info-tags {
|
.company-jobs-info-tags {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -139,6 +170,15 @@
|
|||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.company-jobs-info-deadline {
|
||||||
|
width: 100%;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 11px;
|
||||||
|
color: #86909c;
|
||||||
|
margin-top: 8px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,47 +43,125 @@ export default ({ className = "", data = [], backgroundColor }) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 处理标签显示,优先级:工作地点 > 学历要求 > 福利标签 > 职位标签
|
||||||
|
const getDisplayTags = (item) => {
|
||||||
|
const allTags = [];
|
||||||
|
|
||||||
|
// 添加岗位相关标签(显示在岗位名称右侧)
|
||||||
|
if (item.jobCategory) {
|
||||||
|
allTags.push({
|
||||||
|
text: item.jobCategory,
|
||||||
|
type: 'category',
|
||||||
|
priority: 0
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加工作地点标签
|
||||||
|
if (item.location) {
|
||||||
|
allTags.push({
|
||||||
|
text: item.location,
|
||||||
|
type: 'location',
|
||||||
|
priority: 1
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加学历要求标签
|
||||||
|
if (item.education) {
|
||||||
|
allTags.push({
|
||||||
|
text: item.education,
|
||||||
|
type: 'education',
|
||||||
|
priority: 2
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加福利标签
|
||||||
|
if (item.benefits && Array.isArray(item.benefits)) {
|
||||||
|
item.benefits.slice(0, 2).forEach(benefit => {
|
||||||
|
allTags.push({
|
||||||
|
text: benefit,
|
||||||
|
type: 'benefit',
|
||||||
|
priority: 3
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 添加职位标签
|
||||||
|
if (item.tags && Array.isArray(item.tags)) {
|
||||||
|
item.tags.forEach(tag => {
|
||||||
|
allTags.push({
|
||||||
|
text: tag,
|
||||||
|
type: 'skill',
|
||||||
|
priority: 4
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按优先级排序并限制显示数量(最多显示8个标签,约2行)
|
||||||
|
return allTags.sort((a, b) => a.priority - b.priority).slice(0, 8);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ul className={`company-jobs-page-left-list ${className}`}>
|
<ul className={`company-jobs-page-left-list ${className}`}>
|
||||||
{data?.map((item) => (
|
{data?.map((item) => {
|
||||||
<li
|
const displayTags = getDisplayTags(item);
|
||||||
key={item.id}
|
const categoryTag = displayTags.find(tag => tag.type === 'category');
|
||||||
className="company-jobs-page-left-list-item"
|
const otherTags = displayTags.filter(tag => tag.type !== 'category');
|
||||||
style={{ backgroundColor }}
|
|
||||||
onClick={(e) => handleJobClick(e, item)}
|
return (
|
||||||
>
|
<li
|
||||||
<i className={`icon icon-${item?.jobType}`}></i>
|
key={item.id}
|
||||||
<div className="company-jobs-info">
|
className="company-jobs-page-left-list-item"
|
||||||
<p className="company-jobs-info-position">{item?.position}</p>
|
style={{ backgroundColor }}
|
||||||
<ul className="company-jobs-info-tags">
|
onClick={(e) => handleJobClick(e, item)}
|
||||||
{item?.tags?.map((tag, index) => (
|
>
|
||||||
<li
|
<i className={`icon icon-${item?.jobType}`}></i>
|
||||||
key={`${item.id}-tag-${index}`}
|
<div className="company-jobs-info">
|
||||||
className="company-jobs-info-tag"
|
<div className="company-jobs-info-position-wrapper">
|
||||||
>
|
<p className="company-jobs-info-position">{item?.position}</p>
|
||||||
{tag}
|
{categoryTag && (
|
||||||
</li>
|
<span
|
||||||
))}
|
className="company-jobs-info-category-tag"
|
||||||
</ul>
|
data-category={categoryTag.text}
|
||||||
<p className="company-jobs-info-position-count">
|
>
|
||||||
岗位招聘数量仅剩{item?.remainingPositions}名
|
{categoryTag.text}
|
||||||
</p>
|
</span>
|
||||||
</div>
|
)}
|
||||||
<div className="company-jobs-btn-wrapper">
|
</div>
|
||||||
<p className="company-jobs-info-position-salary">
|
<ul className="company-jobs-info-tags">
|
||||||
{item?.salary}
|
{otherTags?.map((tag, index) => (
|
||||||
</p>
|
<li
|
||||||
<button
|
key={`${item.id}-tag-${index}`}
|
||||||
className="company-jobs-btn"
|
className="company-jobs-info-tag"
|
||||||
onClick={(e) => handleDeliverClick(e, item)}
|
>
|
||||||
>
|
{tag.text}
|
||||||
<i />
|
</li>
|
||||||
<span>投递</span>
|
))}
|
||||||
</button>
|
</ul>
|
||||||
</div>
|
<p className="company-jobs-info-position-count">
|
||||||
</li>
|
岗位招聘数量仅剩{item?.remainingPositions}名
|
||||||
))}
|
</p>
|
||||||
|
</div>
|
||||||
|
<div className="company-jobs-btn-wrapper">
|
||||||
|
<p className="company-jobs-info-position-salary">
|
||||||
|
{item?.salary}
|
||||||
|
</p>
|
||||||
|
<button
|
||||||
|
className="company-jobs-btn"
|
||||||
|
onClick={(e) => handleDeliverClick(e, item)}
|
||||||
|
>
|
||||||
|
<i />
|
||||||
|
<span>投递</span>
|
||||||
|
</button>
|
||||||
|
{item?.deadline && (
|
||||||
|
<p className="company-jobs-info-deadline">
|
||||||
|
截止:{item.deadline}
|
||||||
|
</p>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
);
|
||||||
|
})}
|
||||||
</ul>
|
</ul>
|
||||||
<JobInfoModal
|
<JobInfoModal
|
||||||
data={jobInfoData}
|
data={jobInfoData}
|
||||||
|
|||||||
1106
网页未导入数据/内推岗位.json
Normal file
1106
网页未导入数据/内推岗位.json
Normal file
File diff suppressed because it is too large
Load Diff
7757
网页未导入数据/日历课程表.json
Normal file
7757
网页未导入数据/日历课程表.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user