更新12个教务系统并优化项目大小
主要更新: - 更新所有12个产业的教务系统数据和功能 - 删除所有 node_modules 文件夹(节省3.7GB) - 删除所有 .yoyo 缓存文件夹(节省1.2GB) - 删除所有 dist 构建文件(节省55MB) 项目优化: - 项目大小从 8.1GB 减少到 3.2GB(节省60%空间) - 保留完整的源代码和配置文件 - .gitignore 已配置,防止再次提交大文件 启动脚本: - start-industry.sh/bat/ps1 脚本会自动检测并安装依赖 - 首次启动时自动运行 npm install - 支持单个或批量启动产业系统 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,7 @@ with open('/Users/apple/Documents/cursor/教务系统/frontend_大健康/网页
|
||||
mentor_avatars = {
|
||||
"李奇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dDIg60Tg.png",
|
||||
"宋积极(配方师gigi)": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5E4Al.png",
|
||||
"吴兰": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png",
|
||||
"吴兰": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg",
|
||||
# 其他导师可以添加更多映射
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ const healthTeacherData = updateTeacherCourses({
|
||||
name: "吴兰",
|
||||
introduction: "拥有13年营养科学研究与产品开发经验,专注于功能食品与营养干预产品的产业化转化。累计参与30余种功能性食品开发,包括益生菌饮料、低GI代餐、抗氧化复配胶囊等,部分产品已实现出口,年均销售额超1.2亿元。主导研发的“定制化营养补剂智能配方系统”获得两项发明专利授权,在国内首创以“微量营养素摄入+个体代谢差异”为核心算法模型,实现个性化营养配方输出。其服务过的企业中,超60%在产品升级后实现营收增长超过30%。参与编制多项《保健食品成分使用技术指南》地方标准,对国内营养标签合规、功能声称审核、产品备案有深入理解,是科技成果从实验室走向终端消费市场的中坚力量。",
|
||||
specialties: ["13年功能食品研发专家", "产品年销1.2亿元", "个性化营养算法首创", "60%企业营收增30%"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg",
|
||||
type: "复合课导师",
|
||||
verticalDirection: "健康管理",
|
||||
courses: []
|
||||
|
||||
@@ -47,7 +47,7 @@ new_teacher_data = '''// 导师信息数据
|
||||
name: "吴兰",
|
||||
introduction: "拥有13年营养科学研究与产品开发经验,专注于功能食品与营养干预产品的产业化转化。累计参与30余种功能性食品开发,包括益生菌饮料、低GI代餐、抗氧化复配胶囊等,部分产品已实现出口,年均销售额超1.2亿元。主导研发的"定制化营养补剂智能配方系统"获得两项发明专利授权,在国内首创以"微量营养素摄入+个体代谢差异"为核心算法模型,实现个性化营养配方输出。其服务过的企业中,超60%在产品升级后实现营收增长超过30%。参与编制多项《保健食品成分使用技术指南》地方标准,对国内营养标签合规、功能声称审核、产品备案有深入理解,是科技成果从实验室走向终端消费市场的中坚力量。",
|
||||
specialties: ["13年功能食品研发专家", "产品年销1.2亿元", "个性化营养算法首创", "60%企业营收增30%"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg",
|
||||
type: "复合课导师",
|
||||
verticalDirection: "健康管理",
|
||||
courses: []
|
||||
|
||||
@@ -54,14 +54,9 @@ const CourseList = forwardRef(({ className = "", onCourseClick }, ref) => {
|
||||
activeKey = `vertical-${i + 1}`;
|
||||
}
|
||||
|
||||
// 展开对应的单元
|
||||
setActiveKeys(prevKeys => {
|
||||
if (!prevKeys.includes(activeKey)) {
|
||||
console.log('Adding activeKey:', activeKey, 'to existing keys:', prevKeys);
|
||||
return [...prevKeys, activeKey];
|
||||
}
|
||||
return prevKeys;
|
||||
});
|
||||
// 展开对应的单元(同时收起其他单元)
|
||||
setActiveKeys([activeKey]);
|
||||
console.log('Setting activeKey:', activeKey, '(closing others)');
|
||||
|
||||
// 滚动到对应的单元位置
|
||||
setTimeout(() => {
|
||||
@@ -123,14 +118,9 @@ const CourseList = forwardRef(({ className = "", onCourseClick }, ref) => {
|
||||
activeKey = `vertical-${i + 1}`;
|
||||
}
|
||||
|
||||
// 如果单元未展开,则添加到 activeKeys 中
|
||||
setActiveKeys(prevKeys => {
|
||||
if (!prevKeys.includes(activeKey)) {
|
||||
console.log('Adding activeKey:', activeKey, 'to existing keys:', prevKeys);
|
||||
return [...prevKeys, activeKey];
|
||||
}
|
||||
return prevKeys;
|
||||
});
|
||||
// 展开对应的单元(同时收起其他单元)
|
||||
setActiveKeys([activeKey]);
|
||||
console.log('Setting activeKey:', activeKey, '(closing others)');
|
||||
|
||||
// 设置选中的课程
|
||||
console.log('Setting selectedCourseId to:', course.courseId);
|
||||
@@ -301,17 +291,16 @@ const CourseList = forwardRef(({ className = "", onCourseClick }, ref) => {
|
||||
// 切换单个面板的展开/收起状态
|
||||
setActiveKeys(prevKeys => {
|
||||
const keyStr = String(keys);
|
||||
const newKeys = [...prevKeys];
|
||||
const index = newKeys.indexOf(keyStr);
|
||||
const index = prevKeys.indexOf(keyStr);
|
||||
if (index > -1) {
|
||||
// 如果已展开,则收起
|
||||
newKeys.splice(index, 1);
|
||||
console.log('Closing key:', keyStr);
|
||||
return [];
|
||||
} else {
|
||||
// 如果已收起,则展开
|
||||
newKeys.push(keyStr);
|
||||
// 如果已收起,则展开(同时收起其他所有单元)
|
||||
console.log('Opening key:', keyStr, 'and closing others');
|
||||
return [keyStr];
|
||||
}
|
||||
console.log('Toggling key:', keyStr, 'New activeKeys:', newKeys);
|
||||
return newKeys;
|
||||
});
|
||||
} else if (Array.isArray(keys)) {
|
||||
// 直接设置新的展开状态
|
||||
@@ -437,16 +426,9 @@ const CourseList = forwardRef(({ className = "", onCourseClick }, ref) => {
|
||||
<div
|
||||
className={`time-line-item ${getCourseStatus(course)} ${selectedCourseId === course.courseId ? 'selected' : ''} ${course.canPreview ? 'has-preview' : ''}`}
|
||||
onClick={() => {
|
||||
// 先设置选中状态和触发课程点击事件
|
||||
// 设置选中状态和触发课程点击事件
|
||||
setSelectedCourseId(course.courseId);
|
||||
onCourseClick && onCourseClick({ ...course, unitName: unit.unitName, courseType: 'vertical' });
|
||||
|
||||
// 如果是可试看课程,延迟打开新窗口
|
||||
if (course.canPreview && course.previewUrl) {
|
||||
setTimeout(() => {
|
||||
window.open(course.previewUrl, '_blank');
|
||||
}, 100);
|
||||
}
|
||||
}}
|
||||
style={{ cursor: 'pointer' }}
|
||||
>
|
||||
|
||||
@@ -157,12 +157,12 @@
|
||||
/* 吴兰导师头像特殊调整 - 缩小图片 */
|
||||
.teacher-avatar.teacher-wulan {
|
||||
img {
|
||||
width: 120% !important;
|
||||
height: 120% !important;
|
||||
width: 150% !important;
|
||||
height: 150% !important;
|
||||
object-fit: cover !important;
|
||||
object-position: center center !important;
|
||||
top: 0% !important;
|
||||
left: 50% !important;
|
||||
top: -10% !important;
|
||||
left: 48% !important;
|
||||
transform: translateX(-50%) !important;
|
||||
}
|
||||
}
|
||||
@@ -179,7 +179,20 @@
|
||||
transform: translateX(-50%) !important;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* 赵雪宁导师头像特殊调整 - 向下移动 */
|
||||
.teacher-avatar.teacher-zhaoxuening {
|
||||
img {
|
||||
width: 150% !important;
|
||||
height: 150% !important;
|
||||
|
||||
object-position: center 50% !important;
|
||||
top: 0% !important;
|
||||
left: 50% !important;
|
||||
transform: translateX(-50%) !important;
|
||||
}
|
||||
}
|
||||
|
||||
.avatar-wrapper {
|
||||
position: relative;
|
||||
width: 64px;
|
||||
|
||||
@@ -1,19 +1,77 @@
|
||||
import { useState, useRef, useEffect } from "react";
|
||||
import { Avatar, Tooltip } from "@arco-design/web-react";
|
||||
import Locked from "@/components/Locked";
|
||||
import logoImg from "@/assets/images/Sidebar/logo.png";
|
||||
import "./index.css";
|
||||
|
||||
export default ({ className = "", isLock = false, selectedCourse, teacherData, unitPosters, isPublicCourse = false, backgroundImage }) => {
|
||||
const [isFullscreen, setIsFullscreen] = useState(false);
|
||||
const iframeContainerRef = useRef(null);
|
||||
|
||||
const handleClickBtn = (item) => {
|
||||
console.log(item);
|
||||
};
|
||||
|
||||
// 默认导师信息 - 魏立慧老师(用于求职策略定制页面)
|
||||
// 处理全屏切换
|
||||
const handleFullscreen = () => {
|
||||
const container = iframeContainerRef.current;
|
||||
if (!container) return;
|
||||
|
||||
if (!isFullscreen) {
|
||||
// 进入全屏
|
||||
if (container.requestFullscreen) {
|
||||
container.requestFullscreen();
|
||||
} else if (container.webkitRequestFullscreen) {
|
||||
container.webkitRequestFullscreen();
|
||||
} else if (container.mozRequestFullScreen) {
|
||||
container.mozRequestFullScreen();
|
||||
} else if (container.msRequestFullscreen) {
|
||||
container.msRequestFullscreen();
|
||||
}
|
||||
} else {
|
||||
// 退出全屏
|
||||
if (document.exitFullscreen) {
|
||||
document.exitFullscreen();
|
||||
} else if (document.webkitExitFullscreen) {
|
||||
document.webkitExitFullscreen();
|
||||
} else if (document.mozCancelFullScreen) {
|
||||
document.mozCancelFullScreen();
|
||||
} else if (document.msExitFullscreen) {
|
||||
document.msExitFullscreen();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// 监听全屏状态变化
|
||||
useEffect(() => {
|
||||
const handleFullscreenChange = () => {
|
||||
setIsFullscreen(
|
||||
document.fullscreenElement === iframeContainerRef.current ||
|
||||
document.webkitFullscreenElement === iframeContainerRef.current ||
|
||||
document.mozFullScreenElement === iframeContainerRef.current ||
|
||||
document.msFullscreenElement === iframeContainerRef.current
|
||||
);
|
||||
};
|
||||
|
||||
document.addEventListener('fullscreenchange', handleFullscreenChange);
|
||||
document.addEventListener('webkitfullscreenchange', handleFullscreenChange);
|
||||
document.addEventListener('mozfullscreenchange', handleFullscreenChange);
|
||||
document.addEventListener('MSFullscreenChange', handleFullscreenChange);
|
||||
|
||||
return () => {
|
||||
document.removeEventListener('fullscreenchange', handleFullscreenChange);
|
||||
document.removeEventListener('webkitfullscreenchange', handleFullscreenChange);
|
||||
document.removeEventListener('mozfullscreenchange', handleFullscreenChange);
|
||||
document.removeEventListener('MSFullscreenChange', handleFullscreenChange);
|
||||
};
|
||||
}, []);
|
||||
|
||||
// 默认导师信息 - 赵雪宁老师(用于求职策略定制页面)
|
||||
const defaultTeacher = {
|
||||
name: "魏立慧",
|
||||
introduction: "企业资深一线HR,专注于为求职者提供一对一的个性化指导。通过真实招聘视角,深入剖析个人优势与短板、传授面试技巧、规划职业定位与发展路径,帮助学生快速提升求职竞争力。求职策略以实用落地为核心,注重互动交流与角色定位,让学员在轻松氛围中获得直击痛点的求职策略。",
|
||||
specialties: ["深谙用人逻辑", "擅长挖掘优势", "沟通真诚自然", "点评直击要害"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png",
|
||||
name: "赵雪宁",
|
||||
introduction: "牵头集团人力资源信息化转型,主导上线一体化HR SaaS平台,覆盖招聘、培训、绩效、薪酬及员工关系五大模块,实现全流程数据贯通。通过引入人岗匹配算法与流失预警模型,关键岗位招聘周期缩短28%,内部人才晋升率由12%提升至36%,员工流失率三年下降40%。同时建立人力资本ROI指标体系,高层决策实现数据可视化,直接支撑集团多元化战略扩张,人均产出提升20%,整体人力成本率下降2个百分点。除企业实践外,作为一线资深HR导师,还开展一对一的个性化指导,结合真实招聘视角为学员剖析优势与短板,传授简历优化、面试技巧及职业路径规划,帮助其快速提升求职竞争力并获得针对性的发展建议。",
|
||||
specialties: ["招聘视角剖析", "职业定位规划", "互动交流教学", "个人优势挖掘"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuXLZZ9QdQ6q.png",
|
||||
type: "企业资深HR"
|
||||
};
|
||||
|
||||
@@ -22,12 +80,12 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
courseName: "1V1 求职规划",
|
||||
date: "2024-08-25",
|
||||
unitName: "1V1 规划阶段",
|
||||
teacherName: "魏立慧",
|
||||
teacherName: "赵雪宁",
|
||||
current: false
|
||||
};
|
||||
|
||||
// 获取当前课程的导师信息
|
||||
// 如果是锁定状态(求职策略页面),始终显示魏立慧老师
|
||||
// 如果是锁定状态(求职策略页面),始终显示赵雪宁老师
|
||||
const currentTeacher = isLock
|
||||
? defaultTeacher
|
||||
: (selectedCourse && teacherData && teacherData[selectedCourse.teacherName]
|
||||
@@ -38,7 +96,7 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
const displayCourse = isLock ? oneOnOneCourse : selectedCourse;
|
||||
|
||||
// 需要调整头像位置的导师
|
||||
const needsAdjustment = currentTeacher && ["赵志强", "魏立慧", "郭建辉", "孙应战"].includes(currentTeacher.name);
|
||||
const needsAdjustment = currentTeacher && ["赵志强", "赵雪宁", "郭建辉", "孙应战"].includes(currentTeacher.name);
|
||||
|
||||
// 根据导师设置不同的背景色 - 这些颜色提取自实际的PNG图片背景
|
||||
const getAvatarBackground = (name) => {
|
||||
@@ -47,7 +105,7 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
"郭建辉": "#E0D9D3", // 米灰色
|
||||
"赵志强": "#E3E2E0", // 浅灰色
|
||||
"孙应战": "#FFFFFF", // 白色
|
||||
"魏立慧": "#DCD8D4", // 灰褐色
|
||||
"赵雪宁": "#DCD8D4", // 灰褐色
|
||||
"李奇": "#E8E8E8" // 浅灰色 - 匹配头像背景
|
||||
};
|
||||
return backgrounds[name] || "#E3E2E0";
|
||||
@@ -98,20 +156,87 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
</div>
|
||||
<div className="courses-video-player-video">
|
||||
{selectedCourse ? (
|
||||
/* 选中课程时显示模糊的海报图和锁定状态 */
|
||||
/* 选中课程时,如果是可试看课程则显示iframe,否则显示锁定状态 */
|
||||
selectedCourse.canPreview && selectedCourse.previewUrl ? (
|
||||
/* 显示iframe内嵌课件 */
|
||||
<div
|
||||
ref={iframeContainerRef}
|
||||
style={{
|
||||
position: 'relative',
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
backgroundColor: '#000'
|
||||
}}
|
||||
>
|
||||
<iframe
|
||||
src={selectedCourse.previewUrl}
|
||||
style={{
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
border: 'none',
|
||||
borderRadius: isFullscreen ? '0' : '8px',
|
||||
zoom: isFullscreen ? 1 : 0.5
|
||||
}}
|
||||
title={selectedCourse.courseName}
|
||||
allowFullScreen
|
||||
/>
|
||||
{/* 全屏按钮 */}
|
||||
<button
|
||||
onClick={handleFullscreen}
|
||||
style={{
|
||||
position: 'absolute',
|
||||
top: '16px',
|
||||
right: '16px',
|
||||
width: '40px',
|
||||
height: '40px',
|
||||
borderRadius: '8px',
|
||||
border: 'none',
|
||||
backgroundColor: 'rgba(0, 0, 0, 0.6)',
|
||||
color: '#fff',
|
||||
cursor: 'pointer',
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
fontSize: '20px',
|
||||
transition: 'all 0.3s',
|
||||
zIndex: 10
|
||||
}}
|
||||
onMouseEnter={(e) => {
|
||||
e.currentTarget.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
|
||||
}}
|
||||
onMouseLeave={(e) => {
|
||||
e.currentTarget.style.backgroundColor = 'rgba(0, 0, 0, 0.6)';
|
||||
}}
|
||||
title={isFullscreen ? "退出全屏" : "全屏"}
|
||||
>
|
||||
{isFullscreen ? (
|
||||
// 退出全屏图标
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
|
||||
<path d="M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3" />
|
||||
</svg>
|
||||
) : (
|
||||
// 全屏图标
|
||||
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2">
|
||||
<path d="M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3" />
|
||||
</svg>
|
||||
)}
|
||||
</button>
|
||||
</div>
|
||||
) : (
|
||||
/* 显示模糊的海报图和锁定状态 */
|
||||
<div style={{ position: 'relative', width: '100%', height: '100%' }}>
|
||||
<img
|
||||
<img
|
||||
src={(() => {
|
||||
const posterUrl = selectedCourse?.unitPoster || unitPosters?.[unitName] || unitPosters?.["终生学习系统课"];
|
||||
console.log('CoursesVideoPlayer 背景图片URL:', posterUrl);
|
||||
console.log('selectedCourse.unitPoster:', selectedCourse?.unitPoster);
|
||||
console.log('unitName:', unitName);
|
||||
return posterUrl;
|
||||
})()}
|
||||
})()}
|
||||
alt={unitName}
|
||||
style={{
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
style={{
|
||||
width: '100%',
|
||||
height: '100%',
|
||||
objectFit: 'cover',
|
||||
filter: 'blur(10px)'
|
||||
}}
|
||||
@@ -126,7 +251,7 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
alignItems: 'center',
|
||||
gap: '16px'
|
||||
}}>
|
||||
<img
|
||||
<img
|
||||
src="https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_icon/recuVOrz2GnJdK.png"
|
||||
alt="lock"
|
||||
style={{ width: '280px', height: '280px' }}
|
||||
@@ -144,6 +269,7 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
) : (
|
||||
/* 未选中课程时显示白底和logo */
|
||||
<div style={{
|
||||
@@ -185,8 +311,8 @@ export default ({ className = "", isLock = false, selectedCourse, teacherData, u
|
||||
{/* 直播观众信息 */}
|
||||
<div className="courses-video-player-audience-info">
|
||||
<div className="avatar-wrapper">
|
||||
<Avatar
|
||||
className={`teacher-avatar ${needsAdjustment ? 'avatar-adjust' : ''} ${currentTeacher?.name === '刘杰' ? 'teacher-liujie' : ''} ${currentTeacher?.name === '李奇' ? 'teacher-liqi' : ''} ${currentTeacher?.name === '孙应战' ? 'teacher-sunyingzhan' : ''} ${currentTeacher?.name === '吴兰' ? 'teacher-wulan' : ''} ${currentTeacher?.name === '宋积极(配方师gigi)' ? 'teacher-songjiji' : ''} ${isLock ? 'teacher-strategy' : ''}`}
|
||||
<Avatar
|
||||
className={`teacher-avatar ${needsAdjustment ? 'avatar-adjust' : ''} ${currentTeacher?.name === '刘杰' ? 'teacher-liujie' : ''} ${currentTeacher?.name === '李奇' ? 'teacher-liqi' : ''} ${currentTeacher?.name === '孙应战' ? 'teacher-sunyingzhan' : ''} ${currentTeacher?.name === '吴兰' ? 'teacher-wulan' : ''} ${currentTeacher?.name === '宋积极(配方师gigi)' ? 'teacher-songjiji' : ''} ${currentTeacher?.name === '赵雪宁' ? 'teacher-zhaoxuening' : ''} ${isLock ? 'teacher-strategy' : ''}`}
|
||||
style={{ backgroundColor: getAvatarBackground(currentTeacher?.name) }}
|
||||
>
|
||||
<img
|
||||
|
||||
@@ -105,14 +105,31 @@ const Sidebar = ({ isCollapsed, setIsCollapsed }) => {
|
||||
<IconFont
|
||||
className="sidebar-menu-icon"
|
||||
src={
|
||||
location.pathname === j.path ||
|
||||
location.pathname === j.path ||
|
||||
(j.path === '/company-jobs' && location.pathname === '/company-jobs-list') ||
|
||||
(j.path === '/job-strategy' && location.pathname === '/job-strategy-detail')
|
||||
? j.active
|
||||
? j.active
|
||||
: j.default
|
||||
}
|
||||
/>
|
||||
<span className="sidebar-menu-text">{j.name}</span>
|
||||
{j.path === '/agent' && (
|
||||
<span style={{
|
||||
marginLeft: '8px',
|
||||
padding: '2px 8px',
|
||||
background: 'linear-gradient(135deg, #5DADE2 0%, #2874A6 100%)',
|
||||
borderRadius: '12px',
|
||||
color: '#ffffff',
|
||||
fontSize: '12px',
|
||||
fontWeight: 'bold',
|
||||
fontStyle: 'italic',
|
||||
letterSpacing: '1px',
|
||||
textTransform: 'uppercase',
|
||||
boxShadow: '0 2px 4px rgba(0,0,0,0.1)'
|
||||
}}>
|
||||
demo
|
||||
</span>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@@ -2621,7 +2621,7 @@
|
||||
"上课地点": "线上",
|
||||
"课程状态": "",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "魏立慧",
|
||||
"❌导师姓名查询": "赵雪宁",
|
||||
"❌查询单元名称": ""
|
||||
},
|
||||
{
|
||||
@@ -6071,7 +6071,7 @@
|
||||
"上课地点": "线下",
|
||||
"课程状态": "",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "魏立慧",
|
||||
"❌导师姓名查询": "赵雪宁",
|
||||
"❌查询单元名称": ""
|
||||
},
|
||||
{
|
||||
@@ -7106,7 +7106,7 @@
|
||||
"上课地点": "线下",
|
||||
"课程状态": "",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "魏立慧",
|
||||
"❌导师姓名查询": "赵雪宁",
|
||||
"❌查询单元名称": ""
|
||||
},
|
||||
{
|
||||
@@ -7226,7 +7226,7 @@
|
||||
"上课地点": "线下",
|
||||
"课程状态": "",
|
||||
"❌课程状态": "有课",
|
||||
"❌导师姓名查询": "魏立慧",
|
||||
"❌导师姓名查询": "赵雪宁",
|
||||
"❌查询单元名称": ""
|
||||
},
|
||||
{
|
||||
|
||||
@@ -18,7 +18,7 @@ const expertSupportData = {
|
||||
"content": "应用主要集中在三个方面。第一是临床辅助,AI 能够在医学影像识别、病理诊断和药物研发中发挥重要作用,例如快速筛查X光片中的病灶;第二是健康管理,通过可穿戴设备和智能应用实时监测血压、血糖、心率等指标,并用AI算法预测潜在风险;第三是公共健康,AI 可以帮助流行病趋势预测、医疗资源调度和个体化预防方案设计。这些场景表明,AI已不再是实验室里的技术,而是逐渐嵌入到大健康产业的日常运作中。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2023/9/12 11:04",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -30,7 +30,7 @@ const expertSupportData = {
|
||||
"content": "对患者而言,AI 能缩短就诊等待时间,提高诊断准确率,让个性化治疗方案更容易实现,比如基于基因数据的精准用药推荐;对健康管理者和医生而言,AI 能减轻重复性工作压力,把精力更多放在复杂病例和人与人沟通上。同时,在公共健康层面,AI 能帮助管理者更高效地分配医疗资源,例如在疫情期间预测病床需求,从而提升整个医疗体系的韧性和响应速度。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2023/9/12 19:56",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -105,7 +105,7 @@ const expertSupportData = {
|
||||
"content": "因为大健康的核心理念就是“防重于治”。随着人口老龄化和慢性病高发,单靠治疗已经不足以应对日益增长的健康需求和医疗支出。研究表明,超过70%的慢性病是可以通过生活方式干预和早期预防避免或延缓的。如果能够在源头上控制危险因素,比如不良饮食、缺乏运动、长期压力,就能大幅降低患病风险。对社会而言,疾病预防能减少医疗资源占用和医保压力;对个人而言,则能提升生活质量、延长健康寿命,因此它是大健康产业的基础和前提。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/5/19 11:26",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -117,7 +117,7 @@ const expertSupportData = {
|
||||
"content": "通常分为三级预防。一级预防是从源头控制疾病发生,比如健康教育、接种疫苗、改善饮食和运动习惯;二级预防是早发现、早诊断、早治疗,典型方式有健康体检、疾病筛查、慢病早期干预;三级预防是减少疾病并发症和残疾,帮助患者康复和提高生活质量,比如康复训练、长期护理等。这三级预防环环相扣,体现了大健康产业全周期、全人群的预防理念。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/5/19 20:38",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -129,7 +129,7 @@ const expertSupportData = {
|
||||
"content": "疾病预防方法既包括医学手段,也包括生活方式干预。医学手段方面,比如通过疫苗接种控制传染病的传播,通过基因检测发现易感人群并采取早期干预;生活方式干预则包括均衡饮食、规律运动、控制体重、戒烟限酒、保持良好作息和心理健康管理。同时,定期体检和针对高危人群的专项筛查(如肿瘤标志物检测、心血管风险评估)也非常重要。大健康产业正是通过医疗机构、体检中心、健康管理平台和数字化工具,把这些措施系统化、常态化。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/5/19 23:09",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -192,7 +192,7 @@ const expertSupportData = {
|
||||
"content": "大健康产业的就业前景可以说是长期向好的。因为人口老龄化、慢性病高发以及人们健康消费意识增强,使得社会对健康服务的需求不断增加。与传统医疗相比,大健康覆盖了预防、诊疗、康复、养老、养生、健康管理等全链条,所以就业岗位不仅局限在医院和诊所,还扩展到体检中心、康养机构、健康保险公司、互联网医疗平台等。随着国家战略层面提出“健康中国2030”,相关政策也在持续扶持,这意味着未来10—20年大健康都会保持高速增长,岗位需求稳定且多元化。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/9/9 18:06",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -204,7 +204,7 @@ const expertSupportData = {
|
||||
"content": "一方面需要具备专业能力,比如医学、护理、康复、营养学、心理学等相关知识,这是从业的基础;另一方面需要跨界能力,尤其是对信息化和数字化工具的理解与应用能力,例如健康大数据分析、智能穿戴设备应用、远程医疗平台的操作。除此之外,沟通与服务意识也非常重要,因为大健康服务对象是人本身,良好的同理心和沟通技巧会直接影响服务效果和职业发展。综合来说,大健康行业既要“硬实力”(专业知识、技能),也要“软实力”(沟通、服务与跨界思维)。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/9/10 12:08",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -246,7 +246,7 @@ const expertSupportData = {
|
||||
"content": "因为每个人的身体状况、生活习惯和健康目标都不一样,统一的训练模式往往难以达到理想效果,甚至可能带来运动损伤。个性化运动计划是基于个体的体质、年龄、性别、既往病史、体能水平和目标需求来科学制定的,从而让运动过程更安全、更高效。例如,同样是“减脂”,年轻人可以安排高强度间歇训练,而中老年人则更适合低冲击有氧加力量训练。正是这种针对性,使个性化运动计划在大健康产业中越来越受到重视。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/10/29 16:50",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -258,7 +258,7 @@ const expertSupportData = {
|
||||
"content": "制定计划时需要综合评估多个维度。首先是健康评估,包括心肺功能、血压、体重指数、血糖等关键指标;其次是运动基础,了解肌肉力量、柔韧性和运动习惯;再者是目标设定,比如减脂、增肌、康复或提升耐力;最后是生活方式,包括饮食结构、作息规律和心理状态。通过全面的数据采集,教练或健康管理师能够给出科学的运动处方,确保既能达成目标,又能避免超负荷训练带来的风险。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/10/29 22:36",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -279,7 +279,7 @@ const expertSupportData = {
|
||||
"content": "因为心理健康问题具有高度的个体差异,同样是焦虑症,不同人的诱因、症状表现和应对方式可能完全不同。如果只依赖通用化的方案,往往难以真正解决个体的核心困扰。个体化定制的心理方案会基于个体的心理测评结果、生活习惯、社会关系和应激事件等综合信息,设计出更契合个人特征的干预方式,比如有人更适合认知行为疗法,有人则更需要冥想、运动和生活习惯的调整。这种方式能提高干预的有效性,也更容易让个体建立长久的健康行为模式。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/11/19 18:04",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -291,7 +291,7 @@ const expertSupportData = {
|
||||
"content": "定制的过程通常依托科学的心理测评工具、专业的心理咨询师以及数据分析技术共同完成。首先通过问卷、访谈甚至可穿戴设备收集情绪状态、睡眠质量、压力水平等数据;其次由专业人员进行分析,识别个体心理问题的核心因素;最后在此基础上制定干预方案,比如一对一咨询计划、情绪日记记录、认知行为训练,甚至基于AI的情绪监测与反馈系统。随着技术的发展,AI 和大数据正在成为个体化方案的重要工具,能够不断调整和优化方案,使其更贴近个人的动态变化。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/11/20 11:07",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -312,7 +312,7 @@ const expertSupportData = {
|
||||
"content": "过去医疗更多集中在“治病”,病好了就算结束,但随着人口老龄化和慢性病的增加,人们发现光有治疗还不够,恢复生活质量才是最终目标。健康康复强调在疾病治疗之后,通过运动疗法、营养干预、心理支持和社会适应训练,让患者尽快回归正常生活。这不仅能减轻家庭和社会的负担,也能让患者在身体和心理上真正实现“全面健康”。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/12/4 13:17",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -324,7 +324,7 @@ const expertSupportData = {
|
||||
"content": "健康康复在我国仍处于快速发展阶段。随着“健康中国2030”战略提出,康复医学和康复产业正在被政策大力推动。各地正在建设康复中心、康养社区,互联网康复平台和可穿戴监测设备也在普及。不过相比欧美成熟市场,我国在康复师人才储备、康复设备研发、服务体系完善度上还有差距,整体处于“需求旺盛、供给不足”的阶段。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/12/4 20:24",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -345,7 +345,7 @@ const expertSupportData = {
|
||||
"content": "大健康相关专业的毕业生可以在不同环节找到合适的工作方向。例如,在医疗机构里可以从事健康管理师、康复治疗师、临床数据分析员等岗位;在社区和企业层面,可以成为健康顾问、营养师、心理咨询师,或者进入健康保险公司做风控与理赔;同时,随着互联网医疗和智能可穿戴设备的发展,健康数据分析、远程监测和数字医疗产品设计也为年轻人提供了新兴就业机会。可以说,大健康的就业面从传统医疗延展到科技、保险、服务业,跨界机会非常丰富。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/12/27 17:34",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"type": "user",
|
||||
@@ -357,7 +357,7 @@ const expertSupportData = {
|
||||
"content": " 从产业链来看,大健康就业方向大致分为几个板块:一是医疗与康复,涵盖医院、康复中心、护理机构的相关岗位;二是健康管理与服务,比如体检中心、健康咨询、企业健康管理部门;三是营养与健身,包括营养指导、运动康复、健身教练;四是养老与心理健康,涉及养老院、社区护理和心理辅导;五是健康科技与保险,如互联网医疗平台、健康大数据公司和保险机构。这些细分领域都在快速扩张,学生可以根据兴趣与技能选择适合自己的方向。",
|
||||
"mentor": "吴兰老师",
|
||||
"time": "2024/12/28 11:29",
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"mentorAvatar": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -6581,7 +6581,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "1V1 求职规划",
|
||||
"模拟面试实战练习阶段": "",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "14:00~16:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
@@ -6675,7 +6675,9 @@
|
||||
"上课时间": "20:00~21:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
"上课状态": "上课"
|
||||
"上课状态": "上课",
|
||||
"canPreview": true,
|
||||
"previewUrl": "https://du9uay.github.io/health-education-web/"
|
||||
},
|
||||
{
|
||||
"日期": "2024/9/6",
|
||||
@@ -10469,7 +10471,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
@@ -11549,7 +11551,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
@@ -11585,7 +11587,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
|
||||
@@ -6221,7 +6221,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "1V1 求职规划",
|
||||
"模拟面试实战练习阶段": "",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "14:00~16:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
@@ -10343,7 +10343,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
@@ -12017,7 +12017,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
@@ -12089,7 +12089,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// 导入JSON数据
|
||||
import companyJobsData from './companyJobs.json';
|
||||
import companyJobsNewData from './companyJobsNew.json';
|
||||
import interviewStatusData from './interviewStatus.json';
|
||||
import interviewStatusData from '../../网页未导入数据/岗位面试状态(全产业).json';
|
||||
import calendarCoursesData from './healthCalendar.json';
|
||||
import healthUnitData from '../../网页未导入数据/大健康产业/大健康单元背景.json';
|
||||
// import aiCoursesData from '../../网页未导入数据/文旅产业/ai课程表.json'; // 已删除,使用智能制造自己的数据
|
||||
@@ -13,17 +13,23 @@ const teacherAvatars = {
|
||||
"郭建辉": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJBMNLZL5.png",
|
||||
"赵志强": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJC2oLPpC.png",
|
||||
"孙应战": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpJCc6qecx.jpg",
|
||||
"魏立慧": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png",
|
||||
"赵雪宁": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuXLZZ9QdQ6q.png",
|
||||
"李毅峰": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVPz0WRmxCK.jpeg",
|
||||
"周伏波": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7Gi9YxSN.jpg",
|
||||
"范雪娇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuVU7JsHHDNZ.jpeg",
|
||||
"李奇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg"
|
||||
"李奇": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW8gePZvRn6.jpg",
|
||||
"宋积极(配方师gigi)": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5E4Al.png",
|
||||
"吴兰": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
};
|
||||
|
||||
// 转换函数:将JSON数据转换为页面所需格式
|
||||
// 转换面试状态数据
|
||||
const transformInterviewStatus = (statusData, jobsData) => {
|
||||
return statusData
|
||||
// 过滤出大健康产业的数据
|
||||
const healthData = statusData.filter(status => status["所属产业"] === "大健康");
|
||||
|
||||
return healthData
|
||||
.filter(status => status["流程时间"]) // 过滤掉没有流程时间的记录
|
||||
.map((status, index) => {
|
||||
// 从岗位数据中查找匹配的岗位详情
|
||||
const matchedJob = jobsData.find(job =>
|
||||
@@ -35,11 +41,10 @@ const transformInterviewStatus = (statusData, jobsData) => {
|
||||
let interviewDate;
|
||||
|
||||
// 提取日期时间部分(冒号后面的内容)
|
||||
const stageDateMatch = status["阶段日期"].match(/:(.+)/);
|
||||
const dateTimeStr = stageDateMatch ? stageDateMatch[1] : status["阶段日期"];
|
||||
const dateTimeStr = status["流程时间"] || "";
|
||||
|
||||
// 解析日期时间 "2025/8/13 9:38"
|
||||
const dateTimeMatch = dateTimeStr.match(/(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})/);
|
||||
const dateTimeMatch = dateTimeStr ? dateTimeStr.match(/(\d{4})\/(\d{1,2})\/(\d{1,2})\s+(\d{1,2}):(\d{1,2})/) : null;
|
||||
|
||||
if (dateTimeMatch) {
|
||||
const [_, year, month, day, hour, minute] = dateTimeMatch;
|
||||
@@ -53,28 +58,28 @@ const transformInterviewStatus = (statusData, jobsData) => {
|
||||
formattedDate = `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')} ${hour.padStart(2, '0')}:${minute.padStart(2, '0')}`;
|
||||
} else {
|
||||
// 如果无法解析,使用原始文本和当前时间
|
||||
formattedDate = status["阶段日期"];
|
||||
formattedDate = status["流程时间"] || "未知时间";
|
||||
interviewDate = new Date();
|
||||
}
|
||||
|
||||
// 提取流程标签
|
||||
const stageLabel = status["阶段日期"].split(':')[0] || '未知阶段';
|
||||
// 流程标签直接使用新数据结构中的字段
|
||||
const stageLabel = status["流程标签"] || '未知阶段';
|
||||
|
||||
// 根据面试状态确定状态码和文本
|
||||
// 根据内容确定状态码和文本
|
||||
let statusCode = 'PENDING';
|
||||
let statusText = status["面试状态"];
|
||||
let statusText = status["内容"] || "";
|
||||
|
||||
if (status["面试状态"].includes("Offer已接收")) {
|
||||
if (statusText.includes("Offer已接收")) {
|
||||
statusCode = 'OFFER';
|
||||
} else if (status["面试状态"].includes("Offer已拒绝")) {
|
||||
} else if (statusText.includes("Offer已拒绝")) {
|
||||
statusCode = 'REJECTED_OFFER';
|
||||
} else if (status["面试状态"].includes("未通过")) {
|
||||
} else if (statusText.includes("未通过")) {
|
||||
statusCode = 'FAILED';
|
||||
} else if (status["面试状态"].includes("未参与面试")) {
|
||||
} else if (statusText.includes("未参与面试")) {
|
||||
statusCode = 'MISSED';
|
||||
} else if (status["面试状态"].includes("面试完成")) {
|
||||
} else if (statusText.includes("面试完成")) {
|
||||
statusCode = 'COMPLETED';
|
||||
} else if (status["面试状态"].includes("等待面试")) {
|
||||
} else if (statusText.includes("等待面试")) {
|
||||
statusCode = 'SCHEDULED';
|
||||
}
|
||||
|
||||
@@ -83,8 +88,9 @@ const transformInterviewStatus = (statusData, jobsData) => {
|
||||
position: status["查询岗位名称"],
|
||||
interviewTime: formattedDate,
|
||||
interviewDate: interviewDate, // 用于排序
|
||||
stageDate: status["阶段日期"], // 保留原始的阶段日期信息
|
||||
stageLabel: stageLabel, // 流程标签
|
||||
processFlow: status["岗位内推流程"], // 岗位内推流程
|
||||
flowLabel: status["流程标签"], // 流程标签
|
||||
flowTime: status["流程时间"], // 流程时间(详细时间)
|
||||
status: statusCode,
|
||||
statusText: statusText,
|
||||
job: matchedJob ? {
|
||||
@@ -117,7 +123,14 @@ const transformInterviewStatus = (statusData, jobsData) => {
|
||||
};
|
||||
})
|
||||
.sort((a, b) => {
|
||||
// 按面试时间降序排序(最新的在前)
|
||||
// 首先按状态排序:Offer已接收的排在最前面
|
||||
if (a.statusText.includes("Offer已接收") && !b.statusText.includes("Offer已接收")) {
|
||||
return -1;
|
||||
}
|
||||
if (!a.statusText.includes("Offer已接收") && b.statusText.includes("Offer已接收")) {
|
||||
return 1;
|
||||
}
|
||||
// 如果都是Offer已接收或都不是,则按面试时间降序排序(最新的在前)
|
||||
return b.interviewDate - a.interviewDate;
|
||||
});
|
||||
};;
|
||||
@@ -197,7 +210,7 @@ const transformCalendarCourses = (coursesData) => {
|
||||
if (!course["日期"]) return false;
|
||||
// 不需要过滤AI课程,直接在下面处理
|
||||
// 必须有课程内容
|
||||
return course["个人课程表"] || course["公共课"] || course["企业高管公开课"];
|
||||
return course["个人课程表"] || course["公共课"] || course["企业高管公开课"] || course["1V1 规划阶段"] || course["模拟面试实战练习阶段"];
|
||||
})
|
||||
.map((course, index) => {
|
||||
// 解析日期
|
||||
@@ -651,7 +664,13 @@ const generateVerticalCourseLiveList = (calendarEvents, unitPosters = {}) => {
|
||||
courseObj.canPreview = true;
|
||||
courseObj.previewUrl = "https://du9uay.github.io/zhanhui/";
|
||||
}
|
||||
|
||||
|
||||
// 为"健康状态与健康管理的基本流程"课程添加试看标签和链接
|
||||
if (event.title === "健康状态与健康管理的基本流程" && unitName === "健康管理基础") {
|
||||
courseObj.canPreview = true;
|
||||
courseObj.previewUrl = "https://du9uay.github.io/health-education-web/";
|
||||
}
|
||||
|
||||
unitMap[unitName].courses.push(courseObj);
|
||||
}
|
||||
});
|
||||
@@ -808,7 +827,7 @@ export const mockData = {
|
||||
name: "吴兰",
|
||||
introduction: "拥有13年营养科学研究与产品开发经验,专注于功能食品与营养干预产品的产业化转化。累计参与30余种功能性食品开发,包括益生菌饮料、低GI代餐、抗氧化复配胶囊等,部分产品已实现出口,年均销售额超1.2亿元。主导研发的'定制化营养补剂智能配方系统'获得两项发明专利授权,在国内首创以'微量营养素摄入+个体代谢差异'为核心算法模型,实现个性化营养配方输出。其服务过的企业中,超60%在产品升级后实现营收增长超过30%。参与编制多项《保健食品成分使用技术指南》地方标准,对国内营养标签合规、功能声称审核、产品备案有深入理解,是科技成果从实验室走向终端消费市场的中坚力量。",
|
||||
specialties: ["13年功能食品研发专家", "产品年销1.2亿元", "个性化营养算法首创", "60%企业营收增30%"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg",
|
||||
type: "复合课导师",
|
||||
verticalDirection: "健康管理",
|
||||
courses: []
|
||||
@@ -829,11 +848,11 @@ export const mockData = {
|
||||
type: "公共课导师",
|
||||
courses: []
|
||||
},
|
||||
"魏立慧": {
|
||||
name: "魏立慧",
|
||||
introduction: "企业资深一线HR主讲,专注于为求职者提供一对一的个性化指导。通过真实招聘视角,深入剖析个人优势与短板、传授面试技巧、规划职业定位与发展路径,帮助学生快速提升求职竞争力。求职策略以实用落地为核心,注重互动交流与角色定位,让学员在轻松氛围中获得直击痛点的求职策略。",
|
||||
specialties: ["点评直击要害", "擅长挖掘优势", "职业规划达人", "一线HR资深讲师"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png",
|
||||
"赵雪宁": {
|
||||
name: "赵雪宁",
|
||||
introduction: "牵头集团人力资源信息化转型,主导上线一体化HR SaaS平台,覆盖招聘、培训、绩效、薪酬及员工关系五大模块,实现全流程数据贯通。通过引入人岗匹配算法与流失预警模型,关键岗位招聘周期缩短28%,内部人才晋升率由12%提升至36%,员工流失率三年下降40%。同时建立人力资本ROI指标体系,高层决策实现数据可视化,直接支撑集团多元化战略扩张,人均产出提升20%,整体人力成本率下降2个百分点。除企业实践外,作为一线资深HR导师,还开展一对一的个性化指导,结合真实招聘视角为学员剖析优势与短板,传授简历优化、面试技巧及职业路径规划,帮助其快速提升求职竞争力并获得针对性的发展建议。",
|
||||
specialties: ["招聘视角剖析", "职业定位规划", "互动交流教学", "个人优势挖掘"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuXLZZ9QdQ6q.png",
|
||||
type: "企业资深HR",
|
||||
courses: []
|
||||
},
|
||||
@@ -3776,12 +3795,12 @@ export const mockData = {
|
||||
jobStrategyLive: {
|
||||
courseId: "job-strategy-001",
|
||||
title: "1V1定制求职策略直播指导",
|
||||
teacher: "企业资深HR - 魏立慧",
|
||||
teacherAvatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuUpSO4gUtJz.png",
|
||||
teacher: "企业资深HR - 赵雪宁",
|
||||
teacherAvatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuXLZZ9QdQ6q.png",
|
||||
startTime: new Date().toISOString(),
|
||||
viewers: 1,
|
||||
description:
|
||||
"企业资深一线HR,专注于为求职者提供一对一的个性化指导。通过真实招聘视角,深入剖析个人优势与短板、传授面试技巧、规划职业定位与发展路径,帮助学生快速提升求职竞争力。求职策略以实用落地为核心,注重互动交流与角色定位,让学员在轻松氛围中获得直击痛点的求职策略。",
|
||||
"牵头集团人力资源信息化转型,主导上线一体化HR SaaS平台,覆盖招聘、培训、绩效、薪酬及员工关系五大模块,实现全流程数据贯通。通过引入人岗匹配算法与流失预警模型,关键岗位招聘周期缩短28%,内部人才晋升率由12%提升至36%,员工流失率三年下降40%。同时建立人力资本ROI指标体系,高层决策实现数据可视化,直接支撑集团多元化战略扩张,人均产出提升20%,整体人力成本率下降2个百分点。除企业实践外,作为一线资深HR导师,还开展一对一的个性化指导,结合真实招聘视角为学员剖析优势与短板,传授简历优化、面试技巧及职业路径规划,帮助其快速提升求职竞争力并获得针对性的发展建议。",
|
||||
status: "live",
|
||||
duration: "60分钟",
|
||||
},
|
||||
@@ -3792,14 +3811,14 @@ export const mockData = {
|
||||
keyPoints: [
|
||||
{
|
||||
id: 1,
|
||||
time: "05:05",
|
||||
time: "05:29",
|
||||
type: "strategy",
|
||||
title: "求职理念",
|
||||
content: "深入理解求职的本质,建立正确的求职心态和认知框架。"
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
time: "08:40",
|
||||
time: "09:29",
|
||||
type: "strategy",
|
||||
title: "理念:能力大于学历、曲线就业路径",
|
||||
content: "强调实际能力比学历背景更重要,通过曲线就业路径实现职业目标。"
|
||||
@@ -4698,7 +4717,7 @@ mockData.profileOverview = {
|
||||
studentId: "2325070573",
|
||||
studentNo: "2325070573",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/54bf2cbc6433120fd99d7d85b7c70f3a.jpg",
|
||||
school: "苏州农业职业技术学院",
|
||||
school: "南阳医学高等专科学校",
|
||||
major: "药品生产技术",
|
||||
className: "大健康班",
|
||||
grade: "2023级",
|
||||
@@ -4962,12 +4981,25 @@ if (mockData.homework && mockData.homework[0]) {
|
||||
const compoundHomeworkUnits = [];
|
||||
const compoundHomeworkList = [];
|
||||
let compoundHomeworkId = 1;
|
||||
|
||||
|
||||
// 定义不需要作业的单元
|
||||
const excludedUnits = ['岗位体系认知', '产业体系认知'];
|
||||
|
||||
// 遍历所有复合能力课单元,生成units结构
|
||||
mockData.courseLiveList.forEach(unit => {
|
||||
// 如果是不需要作业的单元,跳过
|
||||
if (excludedUnits.includes(unit.unitName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const unitCourses = [];
|
||||
|
||||
|
||||
unit.courses.forEach(course => {
|
||||
// 过滤掉单元小结课程
|
||||
if (course.courseName && course.courseName.includes('单元小结')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断课程状态
|
||||
let level = "locked";
|
||||
if (course.completed) {
|
||||
@@ -4975,7 +5007,7 @@ if (mockData.homework && mockData.homework[0]) {
|
||||
} else if (course.current) {
|
||||
level = "in-progress";
|
||||
}
|
||||
|
||||
|
||||
const homeworkItem = {
|
||||
id: compoundHomeworkId++,
|
||||
name: course.courseName,
|
||||
@@ -4984,11 +5016,11 @@ if (mockData.homework && mockData.homework[0]) {
|
||||
teacherName: course.teacherName,
|
||||
date: course.date
|
||||
};
|
||||
|
||||
|
||||
unitCourses.push(homeworkItem);
|
||||
compoundHomeworkList.push(homeworkItem);
|
||||
});
|
||||
|
||||
|
||||
// 添加单元到units数组
|
||||
if (unitCourses.length > 0) {
|
||||
compoundHomeworkUnits.push({
|
||||
@@ -4997,7 +5029,7 @@ if (mockData.homework && mockData.homework[0]) {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// 更新复合能力课作业的units和list
|
||||
mockData.homework[0].units = compoundHomeworkUnits;
|
||||
mockData.homework[0].list = compoundHomeworkList;
|
||||
@@ -5008,12 +5040,25 @@ if (mockData.homework && mockData.homework[1]) {
|
||||
const verticalHomeworkUnits = [];
|
||||
const verticalHomeworkList = [];
|
||||
let homeworkId = 1;
|
||||
|
||||
|
||||
// 定义不需要作业的单元
|
||||
const excludedUnits = ['职业规划课'];
|
||||
|
||||
// 遍历所有垂直能力课单元,生成units结构
|
||||
mockData.verticalCourseLiveList.forEach(unit => {
|
||||
// 如果是不需要作业的单元,跳过
|
||||
if (excludedUnits.includes(unit.unitName)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const unitCourses = [];
|
||||
|
||||
|
||||
unit.courses.forEach(course => {
|
||||
// 过滤掉单元小结课程
|
||||
if (course.courseName && course.courseName.includes('单元小结')) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 判断课程状态
|
||||
let level = "locked";
|
||||
if (course.completed) {
|
||||
@@ -5021,7 +5066,7 @@ if (mockData.homework && mockData.homework[1]) {
|
||||
} else if (course.current) {
|
||||
level = "in-progress";
|
||||
}
|
||||
|
||||
|
||||
const homeworkItem = {
|
||||
id: homeworkId++,
|
||||
name: course.courseName,
|
||||
@@ -5030,17 +5075,23 @@ if (mockData.homework && mockData.homework[1]) {
|
||||
teacherName: course.teacherName,
|
||||
date: course.date
|
||||
};
|
||||
|
||||
|
||||
// 为展会主题与品牌定位课程添加特殊标记(使其可点击)
|
||||
if (course.courseName === "展会主题与品牌定位" && unit.unitName === "消费电子展品牌策划与执行") {
|
||||
homeworkItem.isShowCase = true;
|
||||
homeworkItem.previewUrl = "https://du9uay.github.io/zhanhui/";
|
||||
}
|
||||
|
||||
|
||||
// 为健康状态与健康管理的基本流程课程添加特殊标记(使其可点击)
|
||||
if (course.courseName === "健康状态与健康管理的基本流程" && unit.unitName === "健康管理基础") {
|
||||
homeworkItem.canPreview = true;
|
||||
homeworkItem.previewUrl = "https://du9uay.github.io/health-education-web/#/course-test";
|
||||
}
|
||||
|
||||
unitCourses.push(homeworkItem);
|
||||
verticalHomeworkList.push(homeworkItem);
|
||||
});
|
||||
|
||||
|
||||
// 添加单元到units数组
|
||||
if (unitCourses.length > 0) {
|
||||
verticalHomeworkUnits.push({
|
||||
@@ -5049,7 +5100,7 @@ if (mockData.homework && mockData.homework[1]) {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// 更新垂直能力课作业的units和list
|
||||
mockData.homework[1].units = verticalHomeworkUnits;
|
||||
mockData.homework[1].list = verticalHomeworkList;
|
||||
|
||||
@@ -808,7 +808,7 @@ export const mockData = {
|
||||
name: "吴兰",
|
||||
introduction: "拥有13年营养科学研究与产品开发经验,专注于功能食品与营养干预产品的产业化转化。累计参与30余种功能性食品开发,包括益生菌饮料、低GI代餐、抗氧化复配胶囊等,部分产品已实现出口,年均销售额超1.2亿元。主导研发的'定制化营养补剂智能配方系统'获得两项发明专利授权,在国内首创以'微量营养素摄入+个体代谢差异'为核心算法模型,实现个性化营养配方输出。其服务过的企业中,超60%在产品升级后实现营收增长超过30%。参与编制多项《保健食品成分使用技术指南》地方标准,对国内营养标签合规、功能声称审核、产品备案有深入理解,是科技成果从实验室走向终端消费市场的中坚力量。",
|
||||
specialties: ["13年功能食品研发专家", "产品年销1.2亿元", "个性化营养算法首创", "60%企业营收增30%"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg",
|
||||
type: "复合课导师",
|
||||
verticalDirection: "健康管理",
|
||||
courses: []
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -808,7 +808,7 @@ export const mockData = {
|
||||
name: "吴兰",
|
||||
introduction: "拥有13年营养科学研究与产品开发经验,专注于功能食品与营养干预产品的产业化转化。累计参与30余种功能性食品开发,包括益生菌饮料、低GI代餐、抗氧化复配胶囊等,部分产品已实现出口,年均销售额超1.2亿元。主导研发的'定制化营养补剂智能配方系统'获得两项发明专利授权,在国内首创以'微量营养素摄入+个体代谢差异'为核心算法模型,实现个性化营养配方输出。其服务过的企业中,超60%在产品升级后实现营收增长超过30%。参与编制多项《保健食品成分使用技术指南》地方标准,对国内营养标签合规、功能声称审核、产品备案有深入理解,是科技成果从实验室走向终端消费市场的中坚力量。",
|
||||
specialties: ["13年功能食品研发专家", "产品年销1.2亿元", "个性化营养算法首创", "60%企业营收增30%"],
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png",
|
||||
avatar: "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg",
|
||||
type: "复合课导师",
|
||||
verticalDirection: "健康管理",
|
||||
courses: []
|
||||
|
||||
@@ -6566,7 +6566,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "1V1 求职规划",
|
||||
"模拟面试实战练习阶段": "",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "14:00~16:00",
|
||||
"上课地点": "线上",
|
||||
"课程状态": "已完成",
|
||||
@@ -10917,7 +10917,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
@@ -12684,7 +12684,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
@@ -12760,7 +12760,7 @@
|
||||
"企业高管公开课": "",
|
||||
"1V1 规划阶段": "",
|
||||
"模拟面试实战练习阶段": "面试实战",
|
||||
"导师姓名查询": "魏立慧",
|
||||
"导师姓名查询": "赵雪宁",
|
||||
"上课时间": "15:00~16:00",
|
||||
"上课地点": "线下",
|
||||
"课程状态": "已完成",
|
||||
|
||||
14
frontend_大健康/src/pages/AgentPage/index.css
Normal file
14
frontend_大健康/src/pages/AgentPage/index.css
Normal file
@@ -0,0 +1,14 @@
|
||||
.agent-page-wrapper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.agent-page-iframe {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: none;
|
||||
zoom: 0.8;
|
||||
}
|
||||
17
frontend_大健康/src/pages/AgentPage/index.jsx
Normal file
17
frontend_大健康/src/pages/AgentPage/index.jsx
Normal file
@@ -0,0 +1,17 @@
|
||||
import "./index.css";
|
||||
|
||||
const AgentPage = () => {
|
||||
return (
|
||||
<div className="agent-page-wrapper">
|
||||
<iframe
|
||||
src="http://127.0.0.1:4173/"
|
||||
className="agent-page-iframe"
|
||||
title="Agent"
|
||||
frameBorder="0"
|
||||
allowFullScreen
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default AgentPage;
|
||||
@@ -228,12 +228,7 @@ const EventDetailModal = ({ isOpen, event, onClose }) => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* AI课和营销能力课显示课程信息 */}
|
||||
{(eventItem.type === 'ai-course' || eventItem.type === 'marketing-course') && (
|
||||
<div className="event-description">
|
||||
{eventItem.title} - {eventItem.teacher}老师
|
||||
</div>
|
||||
)}
|
||||
|
||||
|
||||
{/* 企业高管公开课添加线下参与标签 */}
|
||||
{eventItem.type === 'public-course' && (
|
||||
|
||||
@@ -437,3 +437,174 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 公司图片网格布局样式 */
|
||||
.company-images-grid {
|
||||
margin-top: 16px;
|
||||
width: 100%;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
|
||||
gap: 12px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
/* 根据图片数量调整列数 */
|
||||
.company-images-grid:has(.company-image-item:nth-child(1):last-child) {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.company-images-grid:has(.company-image-item:nth-child(2):last-child) {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
.company-images-grid:has(.company-image-item:nth-child(3):last-child) {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
|
||||
.company-images-grid:has(.company-image-item:nth-child(4)) {
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
}
|
||||
|
||||
.company-image-item {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
aspect-ratio: 4/3;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
cursor: pointer;
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.company-image-item:hover {
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
||||
transform: translateY(-4px);
|
||||
}
|
||||
|
||||
.company-grid-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
transition: transform 0.3s ease;
|
||||
}
|
||||
|
||||
.company-image-item:hover .company-grid-image {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
/* 图片预览模态框样式 */
|
||||
.image-preview-modal {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.9);
|
||||
z-index: 10000;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
animation: fadeIn 0.3s ease;
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.image-preview-content {
|
||||
position: relative;
|
||||
max-width: 90vw;
|
||||
max-height: 90vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.image-preview-img {
|
||||
max-width: 100%;
|
||||
max-height: 90vh;
|
||||
object-fit: contain;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.image-preview-close {
|
||||
position: absolute;
|
||||
top: -50px;
|
||||
right: 0;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
color: white;
|
||||
border: 2px solid rgba(255, 255, 255, 0.5);
|
||||
font-size: 28px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all 0.3s ease;
|
||||
backdrop-filter: blur(4px);
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
.image-preview-counter {
|
||||
position: absolute;
|
||||
bottom: -40px;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
color: white;
|
||||
padding: 6px 16px;
|
||||
border-radius: 16px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
backdrop-filter: blur(4px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.image-preview-btn {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
color: white;
|
||||
border: 2px solid rgba(255, 255, 255, 0.5);
|
||||
font-size: 32px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all 0.3s ease;
|
||||
backdrop-filter: blur(4px);
|
||||
|
||||
&:hover {
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
transform: translateY(-50%) scale(1.1);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: translateY(-50%) scale(0.95);
|
||||
}
|
||||
}
|
||||
|
||||
.image-preview-btn-prev {
|
||||
left: -70px;
|
||||
}
|
||||
|
||||
.image-preview-btn-next {
|
||||
right: -70px;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,439 @@
|
||||
.job-info-modal-content {
|
||||
max-height: 80vh;
|
||||
max-width: 860px;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
background-color: #f2f3f5;
|
||||
background-image: url("@/assets/images/CompanyJobsPage/background.png");
|
||||
background-size: 100% auto;
|
||||
background-position: top center;
|
||||
background-repeat: no-repeat;
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
padding: 20px;
|
||||
|
||||
/* 自定义滚动条样式 */
|
||||
&::-webkit-scrollbar {
|
||||
width: 6px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
background: #f1f1f1;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
background: #667eea;
|
||||
border-radius: 3px;
|
||||
|
||||
&:hover {
|
||||
background: #764ba2;
|
||||
}
|
||||
}
|
||||
|
||||
.job-info-modal-search {
|
||||
width: 319px;
|
||||
height: 36px;
|
||||
border: 1px solid #2c7aff;
|
||||
|
||||
span {
|
||||
background-color: #fff;
|
||||
}
|
||||
input {
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
.empty-data-wrapper {
|
||||
width: 100%;
|
||||
min-height: 555px;
|
||||
display: flex;
|
||||
}
|
||||
.job-info-modal-user-resumes-list {
|
||||
width: 100%;
|
||||
min-height: 400px;
|
||||
margin-top: 16px;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr); /* 每行两列 */
|
||||
gap: 20px; /* 网格间距 */
|
||||
justify-items: start; /* 项目左对龁 */
|
||||
overflow-y: visible;
|
||||
|
||||
.list-item {
|
||||
width: 390px;
|
||||
height: 100px;
|
||||
background-color: #fff;
|
||||
border-radius: 8px;
|
||||
position: relative;
|
||||
box-sizing: border-box;
|
||||
padding: 16px 12px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.list-item-info {
|
||||
height: 68px;
|
||||
width: 300px;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
|
||||
.file-icon {
|
||||
width: 68px;
|
||||
height: 68px;
|
||||
filter: none !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
||||
.file-info {
|
||||
width: 220px;
|
||||
height: 68px;
|
||||
> p {
|
||||
text-align: left;
|
||||
}
|
||||
.file-info-targetPosition {
|
||||
width: 100%;
|
||||
height: 28px;
|
||||
color: #09090b;
|
||||
line-height: 28px;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.file-info-skills {
|
||||
margin-top: 5px;
|
||||
width: 100%;
|
||||
height: 21px;
|
||||
color: #788089;
|
||||
line-height: 21px;
|
||||
font-size: 15px;
|
||||
font-weight: 400;
|
||||
overflow: hidden; /* 超出隐藏 */
|
||||
white-space: nowrap; /* 禁止换行 */
|
||||
text-overflow: ellipsis; /* 文本溢出显示省略号 */
|
||||
}
|
||||
|
||||
.version-selector {
|
||||
margin-top: 8px;
|
||||
width: 100%;
|
||||
height: 32px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.arco-select {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.arco-select-view-single {
|
||||
height: 28px !important;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.info-btn {
|
||||
width: 64px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
text-align: center;
|
||||
border-radius: 2px;
|
||||
border: 1px solid #2c7aff;
|
||||
color: #2c7aff;
|
||||
font-size: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
background-color: #ffffff;
|
||||
font-weight: 500;
|
||||
|
||||
&:hover {
|
||||
background-color: #2c7aff;
|
||||
color: #ffffff;
|
||||
box-shadow: 0 2px 8px rgba(44, 122, 255, 0.3);
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: scale(0.98);
|
||||
box-shadow: 0 1px 4px rgba(44, 122, 255, 0.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.job-info-modal-content-position-info {
|
||||
width: 100%;
|
||||
min-height: 30px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
position: relative;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
|
||||
.job-info-modal-content-position-info-position {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
line-height: 30px;
|
||||
color: #1d2129;
|
||||
}
|
||||
|
||||
.job-category-tag {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
padding: 4px 12px;
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
color: white;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
border-radius: 12px;
|
||||
white-space: nowrap;
|
||||
box-shadow: 0 2px 4px rgba(102, 126, 234, 0.3);
|
||||
}
|
||||
|
||||
/* 根据岗位相关标签内容设置不同颜色 */
|
||||
.job-category-tag[data-category="专业相关岗位"] {
|
||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||
}
|
||||
|
||||
.job-category-tag[data-category="非专业相关岗位"] {
|
||||
background: linear-gradient(135deg, #ff6b6b 0%, #feca57 100%);
|
||||
}
|
||||
|
||||
.job-category-tag[data-category="人才出海岗位"] {
|
||||
background: linear-gradient(135deg, #00d2ff 0%, #3a7bd5 100%);
|
||||
}
|
||||
|
||||
.job-remaining-positions {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
margin-left: 8px;
|
||||
color: #ff4d4f;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
|
||||
.warning-icon {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border-radius: 50%;
|
||||
background-color: #ff4d4f;
|
||||
color: #ffffff;
|
||||
font-size: 10px;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
margin-right: 4px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.job-info-modal-content-position-info-num {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 22px;
|
||||
color: #ff7d00;
|
||||
}
|
||||
|
||||
.job-info-modal-content-position-info-salary {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
color: #ff7d00;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.job-info-modal-info-tags {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 10px;
|
||||
|
||||
.job-info-modal-info-tag {
|
||||
background-color: #ffffff;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 5px;
|
||||
padding: 4px 12px;
|
||||
color: #86909c;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
border-radius: 4px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.job-info-modal-content-position-info-description,
|
||||
.job-info-modal-content-position-info-requirements,
|
||||
.job-info-modal-content-position-info-companyInfo {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 16px;
|
||||
border-radius: 8px;
|
||||
background-color: #fff;
|
||||
margin: 10px 0;
|
||||
border: 1px solid #e5e6eb;
|
||||
|
||||
> p {
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
}
|
||||
.description-title,
|
||||
.requirements-title,
|
||||
.companyInfo-title {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
line-height: 28px;
|
||||
color: #1d2129;
|
||||
margin-bottom: 12px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.title-icon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin-right: 8px;
|
||||
object-fit: contain;
|
||||
}
|
||||
}
|
||||
|
||||
.description-content {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
color: #4e5969;
|
||||
text-align: left;
|
||||
|
||||
.description-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 8px;
|
||||
text-align: left;
|
||||
|
||||
.description-number {
|
||||
display: inline-block;
|
||||
min-width: 20px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #1d2129;
|
||||
margin-right: 6px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.description-text {
|
||||
flex: 1;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
color: #4e5969;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.companyInfo-content {
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
color: #4e5969;
|
||||
text-align: left;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
}
|
||||
.requirements-content {
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
|
||||
.requirements-item {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 8px;
|
||||
text-align: left;
|
||||
|
||||
.requirement-number {
|
||||
display: inline-block;
|
||||
min-width: 20px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: #1d2129;
|
||||
margin-right: 6px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.requirement-text {
|
||||
flex: 1;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
color: #4e5969;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.requirement-line {
|
||||
margin-bottom: 8px;
|
||||
padding-left: 16px;
|
||||
position: relative;
|
||||
font-size: 14px;
|
||||
line-height: 22px;
|
||||
color: #4e5969;
|
||||
text-align: left;
|
||||
|
||||
&:before {
|
||||
content: "•";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
color: #667eea;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.job-info-modal-btn {
|
||||
width: 120px;
|
||||
height: 36px;
|
||||
line-height: 36px;
|
||||
color: #fff;
|
||||
background-color: #2c7aff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 2px;
|
||||
cursor: pointer;
|
||||
|
||||
> i {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
margin-right: 5px;
|
||||
background-image: url("@/assets/images/CompanyJobsPage/btn_icon_2.png");
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
> span {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,8 @@ export default ({ visible, onClose, data, directToResume = false, hideDeliverBut
|
||||
const [listHasMore, setListHasMore] = useState(true);
|
||||
const [permissionModalVisible, setPermissionModalVisible] = useState(false);
|
||||
const [selectedVersions, setSelectedVersions] = useState({}); // 每个简历的版本选择,使用简历ID作为key
|
||||
const [currentImageIndex, setCurrentImageIndex] = useState(0); // 当前显示的图片索引
|
||||
const [imageModalVisible, setImageModalVisible] = useState(false); // 图片预览模态框
|
||||
|
||||
// 处理directToResume参数变化
|
||||
useEffect(() => {
|
||||
@@ -39,9 +41,29 @@ export default ({ visible, onClose, data, directToResume = false, hideDeliverBut
|
||||
setResumeList([]); // 清空简历列表
|
||||
setListPage(1); // 重置分页
|
||||
setListHasMore(true); // 重置加载更多状态
|
||||
setCurrentImageIndex(0); // 重置图片索引
|
||||
onClose();
|
||||
};
|
||||
|
||||
// 图片轮播相关函数
|
||||
const handlePrevImage = () => {
|
||||
const images = data?.details?.companyImages || [];
|
||||
setCurrentImageIndex((prev) => (prev === 0 ? images.length - 1 : prev - 1));
|
||||
};
|
||||
|
||||
const handleNextImage = () => {
|
||||
const images = data?.details?.companyImages || [];
|
||||
setCurrentImageIndex((prev) => (prev === images.length - 1 ? 0 : prev + 1));
|
||||
};
|
||||
|
||||
const handleImageClick = () => {
|
||||
setImageModalVisible(true);
|
||||
};
|
||||
|
||||
const handleCloseImageModal = () => {
|
||||
setImageModalVisible(false);
|
||||
};
|
||||
|
||||
const queryResumeList = useCallback(async () => {
|
||||
const res = await getResumesList({
|
||||
page: listPage,
|
||||
@@ -274,8 +296,12 @@ export default ({ visible, onClose, data, directToResume = false, hideDeliverBut
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 岗位剩余量 - 仅未投递岗位显示 */}
|
||||
{!data?.isDelivered && data?.remainingPositions && (
|
||||
{/* 岗位剩余量 - 仅未投递、未过期且非面试状态岗位显示 */}
|
||||
{!data?.isDelivered &&
|
||||
!data?.isExpired &&
|
||||
data?.status !== 'expired' &&
|
||||
!hideDeliverButton &&
|
||||
data?.remainingPositions && (
|
||||
<span className="job-remaining-positions">
|
||||
<i className="warning-icon">!</i>
|
||||
岗位招聘数量仅剩{data?.remainingPositions}名
|
||||
@@ -349,9 +375,33 @@ export default ({ visible, onClose, data, directToResume = false, hideDeliverBut
|
||||
</p>
|
||||
))}
|
||||
</div>
|
||||
{data?.details?.companyImages && data.details.companyImages.length > 0 && (
|
||||
<div className="company-images-grid">
|
||||
{data.details.companyImages.map((imageUrl, index) => (
|
||||
<div
|
||||
key={index}
|
||||
className="company-image-item"
|
||||
onClick={() => {
|
||||
setCurrentImageIndex(index);
|
||||
handleImageClick();
|
||||
}}
|
||||
>
|
||||
<img
|
||||
src={imageUrl}
|
||||
alt={`公司图片 ${index + 1}`}
|
||||
className="company-grid-image"
|
||||
/>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
)}
|
||||
{!hideDeliverButton && (
|
||||
{/* 立即投递按钮 - 仅未投递、未过期且非面试状态岗位显示 */}
|
||||
{!data?.isDelivered &&
|
||||
!data?.isExpired &&
|
||||
data?.status !== 'expired' &&
|
||||
!hideDeliverButton && (
|
||||
<div
|
||||
className="job-info-modal-btn"
|
||||
onClick={handleClickDeliverBtn}
|
||||
@@ -374,10 +424,27 @@ export default ({ visible, onClose, data, directToResume = false, hideDeliverBut
|
||||
setCurrentResumeId(null);
|
||||
}}
|
||||
/>
|
||||
<PermissionModal
|
||||
<PermissionModal
|
||||
visible={permissionModalVisible}
|
||||
onClose={() => setPermissionModalVisible(false)}
|
||||
/>
|
||||
{imageModalVisible && data?.details?.companyImages && (
|
||||
<div className="image-preview-modal" onClick={handleCloseImageModal}>
|
||||
<div className="image-preview-content" onClick={(e) => e.stopPropagation()}>
|
||||
<button className="image-preview-close" onClick={handleCloseImageModal}>×</button>
|
||||
<img
|
||||
src={data.details.companyImages[currentImageIndex]}
|
||||
alt={`公司图片 ${currentImageIndex + 1}`}
|
||||
className="image-preview-img"
|
||||
/>
|
||||
<div className="image-preview-counter">
|
||||
{currentImageIndex + 1} / {data.details.companyImages.length}
|
||||
</div>
|
||||
<button className="image-preview-btn image-preview-btn-prev" onClick={handlePrevImage}>‹</button>
|
||||
<button className="image-preview-btn image-preview-btn-next" onClick={handleNextImage}>›</button>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -0,0 +1,383 @@
|
||||
import { useState, useCallback, useEffect } from "react";
|
||||
import { useSelector } from "react-redux";
|
||||
import { Input, Select } from "@arco-design/web-react";
|
||||
import Modal from "@/components/Modal";
|
||||
import InfiniteScroll from "@/components/InfiniteScroll";
|
||||
import toast from "@/components/Toast";
|
||||
import FILEICON from "@/assets/images/CompanyJobsPage/file_icon.png";
|
||||
import ResumeInfoModal from "../ResumeInfoModal";
|
||||
import PermissionModal from "../PermissionModal";
|
||||
import { getResumesList, submitResume, getPageData } from "@/services";
|
||||
import "./index.css";
|
||||
|
||||
const InputSearch = Input.Search;
|
||||
const PAGE_SIZE = 10;
|
||||
|
||||
export default ({ visible, onClose, data, directToResume = false, hideDeliverButton = false }) => {
|
||||
const studentInfo = useSelector((state) => state.student.studentInfo);
|
||||
const [resumeModalShow, setResumeModalShow] = useState(directToResume);
|
||||
const [resumeInfoModalShow, setResumeInfoModalShow] = useState(false);
|
||||
const [resumeInfoData, setResumeInfoData] = useState(null);
|
||||
const [currentResumeId, setCurrentResumeId] = useState(null); // 当前查看的简历ID
|
||||
const [resumeList, setResumeList] = useState([]); // 简历列表
|
||||
const [listPage, setListPage] = useState(1);
|
||||
const [listHasMore, setListHasMore] = useState(true);
|
||||
const [permissionModalVisible, setPermissionModalVisible] = useState(false);
|
||||
const [selectedVersions, setSelectedVersions] = useState({}); // 每个简历的版本选择,使用简历ID作为key
|
||||
|
||||
// 处理directToResume参数变化
|
||||
useEffect(() => {
|
||||
if (visible && directToResume) {
|
||||
setResumeModalShow(true);
|
||||
} else if (visible && !directToResume) {
|
||||
setResumeModalShow(false);
|
||||
}
|
||||
}, [visible, directToResume]);
|
||||
|
||||
const handleCloseModal = () => {
|
||||
setResumeModalShow(false);
|
||||
setResumeList([]); // 清空简历列表
|
||||
setListPage(1); // 重置分页
|
||||
setListHasMore(true); // 重置加载更多状态
|
||||
onClose();
|
||||
};
|
||||
|
||||
const queryResumeList = useCallback(async () => {
|
||||
const res = await getResumesList({
|
||||
page: listPage,
|
||||
pageSize: PAGE_SIZE,
|
||||
studentId: studentInfo?.id
|
||||
});
|
||||
if (res.success) {
|
||||
setResumeList((prevList) => {
|
||||
const newList = [...prevList, ...res.data];
|
||||
if (res.total === newList?.length) {
|
||||
setListHasMore(false);
|
||||
} else {
|
||||
setListPage((prevPage) => prevPage + 1);
|
||||
}
|
||||
return newList;
|
||||
});
|
||||
}
|
||||
}, [listPage, studentInfo?.id]);
|
||||
|
||||
// 点击立即投递
|
||||
const handleClickDeliverBtn = (e) => {
|
||||
e.stopPropagation();
|
||||
setResumeModalShow(true);
|
||||
};
|
||||
|
||||
|
||||
|
||||
// 选择简历投递
|
||||
const userResumesClick = async (item) => {
|
||||
// 显示权限提示弹窗
|
||||
setPermissionModalVisible(true);
|
||||
|
||||
// 原投递逻辑暂时注释,实际使用时可根据用户权限判断
|
||||
/*
|
||||
try {
|
||||
// 调用投递服务
|
||||
const result = await submitResume({
|
||||
resumeId: item.id,
|
||||
jobId: data?.id,
|
||||
studentId: studentInfo?.id,
|
||||
resumeTitle: item.title,
|
||||
jobPosition: data?.position,
|
||||
company: data?.company,
|
||||
resumeVersion: selectedVersions[item.id] || "2" // 添加版本信息
|
||||
});
|
||||
|
||||
if (result.success) {
|
||||
// 投递成功,显示成功提示
|
||||
const versionText = (selectedVersions[item.id] || "2") === "1" ? "原始版" : "个人修改版";
|
||||
toast.success(`简历"${item.title}"(${versionText})投递成功!`);
|
||||
|
||||
// 关闭模态框
|
||||
handleCloseModal();
|
||||
|
||||
// 输出投递成功信息
|
||||
console.log('投递成功', {
|
||||
applicationId: result.data.applicationId,
|
||||
resumeId: item.id,
|
||||
jobId: data?.id,
|
||||
resumeTitle: item.title,
|
||||
jobPosition: data?.position,
|
||||
submittedAt: result.data.submittedAt
|
||||
});
|
||||
} else {
|
||||
toast.error(result.message || '投递失败,请重试');
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
toast.error('投递失败,请重试');
|
||||
console.error('投递失败:', error);
|
||||
}
|
||||
*/
|
||||
};
|
||||
|
||||
// 点击简历详情
|
||||
const userResumesBtnClick = async (e, item) => {
|
||||
e.stopPropagation();
|
||||
|
||||
try {
|
||||
// 获取岗位与面试题页面的数据
|
||||
const pageDataResponse = await getPageData();
|
||||
|
||||
if (pageDataResponse.success) {
|
||||
const pageData = pageDataResponse.data;
|
||||
|
||||
// 找到对应的行业信息
|
||||
const matchedIndustry = pageData.industries?.find(industry =>
|
||||
industry.name === item.industry
|
||||
);
|
||||
|
||||
// 从resumeTemplates中查找对应岗位的模板
|
||||
const industryTemplates = pageData.resumeTemplates?.[item.industry] || [];
|
||||
const positionTemplate = industryTemplates.find(template =>
|
||||
template.position === item.position
|
||||
);
|
||||
|
||||
// 添加调试日志
|
||||
console.log('查找简历模板:', {
|
||||
industryName: item.industry,
|
||||
positionTitle: item.position,
|
||||
templatesCount: industryTemplates.length,
|
||||
templatePositions: industryTemplates.map(t => t.position),
|
||||
templatesStructure: industryTemplates.slice(0, 2).map(t => ({
|
||||
position: t.position,
|
||||
hasContent: !!t.content,
|
||||
hasStudentInfo: !!t.studentInfo,
|
||||
keys: Object.keys(t)
|
||||
}))
|
||||
});
|
||||
|
||||
if (positionTemplate) {
|
||||
console.log('找到的模板:', {
|
||||
position: positionTemplate.position,
|
||||
hasContent: !!positionTemplate.content,
|
||||
hasContentOriginal: !!positionTemplate.content?.original,
|
||||
hasStudentInfo: !!positionTemplate.studentInfo,
|
||||
templateKeys: Object.keys(positionTemplate),
|
||||
contentKeys: positionTemplate.content ? Object.keys(positionTemplate.content) : null
|
||||
});
|
||||
} else {
|
||||
console.warn('未找到简历模板:', item.position);
|
||||
}
|
||||
|
||||
// 构造简历数据,使用与ResumeInterviewPage相同的格式
|
||||
const resumeData = {
|
||||
title: item.position, // 使用岗位名称作为标题
|
||||
content: positionTemplate?.content || null, // 这里包含原始版和修改版数据
|
||||
selectedTemplate: positionTemplate, // 添加selectedTemplate字段
|
||||
studentResume: pageData.myResume
|
||||
};
|
||||
|
||||
console.log('加载简历数据:', {
|
||||
resumeTitle: item.title,
|
||||
position: item.position,
|
||||
industry: item.industry,
|
||||
selectedVersion: selectedVersions[item.id] || "2",
|
||||
hasContent: !!positionTemplate?.content,
|
||||
hasOriginal: !!positionTemplate?.content?.original,
|
||||
hasModified: !!positionTemplate?.content?.modified
|
||||
});
|
||||
|
||||
setResumeInfoData(resumeData);
|
||||
setCurrentResumeId(item.id); // 记录当前简历ID
|
||||
setResumeInfoModalShow(true);
|
||||
} else {
|
||||
toast.error('加载简历数据失败');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取简历数据失败:', error);
|
||||
toast.error('加载简历数据失败');
|
||||
}
|
||||
};;;
|
||||
|
||||
return (
|
||||
<>
|
||||
<Modal visible={visible} onClose={handleCloseModal}>
|
||||
<div className="job-info-modal-content">
|
||||
{resumeModalShow ? (
|
||||
<>
|
||||
|
||||
{
|
||||
<InfiniteScroll
|
||||
loadMore={queryResumeList}
|
||||
hasMore={listHasMore}
|
||||
empty={resumeList.length === 0}
|
||||
className={`${
|
||||
resumeList.length
|
||||
? "job-info-modal-user-resumes-list"
|
||||
: "empty-data-wrapper"
|
||||
}`}
|
||||
>
|
||||
{resumeList.map((item) => (
|
||||
<li
|
||||
key={item.id}
|
||||
className="list-item"
|
||||
onClick={(e) => userResumesBtnClick(e, item)}
|
||||
>
|
||||
<div className="list-item-info">
|
||||
<img src={FILEICON} className="file-icon" />
|
||||
<div className="file-info">
|
||||
<p className="file-info-targetPosition">
|
||||
{item.title}
|
||||
</p>
|
||||
<div className="version-selector">
|
||||
<Select
|
||||
placeholder="选择版本"
|
||||
value={selectedVersions[item.id] || "2"}
|
||||
style={{ width: 120, fontSize: '12px' }}
|
||||
onChange={(value) => {
|
||||
setSelectedVersions(prev => ({
|
||||
...prev,
|
||||
[item.id]: value
|
||||
}));
|
||||
}}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
<Select.Option value="1">原始版</Select.Option>
|
||||
<Select.Option value="2">个人修改版</Select.Option>
|
||||
</Select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
className="info-btn"
|
||||
onClick={(e) => {
|
||||
e.stopPropagation();
|
||||
userResumesClick(item);
|
||||
}}
|
||||
>
|
||||
投递
|
||||
</div>
|
||||
</li>
|
||||
))}
|
||||
</InfiniteScroll>
|
||||
}
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
<div className="job-info-modal-content-position-info">
|
||||
<span className="job-info-modal-content-position-info-position">
|
||||
{data?.position}
|
||||
</span>
|
||||
{/* 岗位相关标签 */}
|
||||
{(data?.jobCategoryTag || data?.jobCategory) && (
|
||||
<span
|
||||
className="job-category-tag"
|
||||
data-category={data?.jobCategoryTag || data?.jobCategory}
|
||||
>
|
||||
{data?.jobCategoryTag || data?.jobCategory}
|
||||
</span>
|
||||
)}
|
||||
|
||||
{/* 岗位剩余量 - 仅未投递岗位显示 */}
|
||||
{!data?.isDelivered && data?.remainingPositions && (
|
||||
<span className="job-remaining-positions">
|
||||
<i className="warning-icon">!</i>
|
||||
岗位招聘数量仅剩{data?.remainingPositions}名
|
||||
</span>
|
||||
)}
|
||||
|
||||
<span className="job-info-modal-content-position-info-salary">
|
||||
{data?.salary}
|
||||
</span>
|
||||
</div>
|
||||
{data?.tags?.length > 0 && (
|
||||
<ul className="job-info-modal-info-tags">
|
||||
{data?.tags?.map((tag, index) => (
|
||||
<li key={index} className="job-info-modal-info-tag">
|
||||
{tag}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)}
|
||||
{data?.details?.description && (
|
||||
<div className="job-info-modal-content-position-info-description">
|
||||
<p className="description-title">
|
||||
<img className="title-icon" src="https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_icon/recuW0XRVB1bpV.png" alt="" />
|
||||
岗位描述
|
||||
</p>
|
||||
<div className="description-content">
|
||||
{data?.details?.description.split(/\d+\.\s*/).filter(item => item.trim()).map((item, index) => (
|
||||
<div key={index} className="description-item">
|
||||
<span className="description-number">{index + 1}.</span>
|
||||
<span className="description-text">{item.trim()}</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{(data?.details?.requirements?.length > 0 || data?.details?.requirementsText) && (
|
||||
<div className="job-info-modal-content-position-info-requirements">
|
||||
<p className="requirements-title">
|
||||
<img className="title-icon" src="https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_icon/recuW0XRVB1bpV.png" alt="" />
|
||||
岗位要求
|
||||
</p>
|
||||
<div className="requirements-content">
|
||||
{data?.details?.requirements ? (
|
||||
data?.details?.requirements?.map((item, index) => (
|
||||
<div key={index} className="requirements-item">
|
||||
<span className="requirement-number">{index + 1}.</span>
|
||||
<span className="requirement-text">{item}</span>
|
||||
</div>
|
||||
))
|
||||
) : (
|
||||
data?.details?.requirementsText?.split(/\d+\.\s*/).filter(item => item.trim()).map((item, index) => (
|
||||
<div key={index} className="requirements-item">
|
||||
<span className="requirement-number">{index + 1}.</span>
|
||||
<span className="requirement-text">{item.trim()}</span>
|
||||
</div>
|
||||
))
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{data?.details?.companyInfo && (
|
||||
<div className="job-info-modal-content-position-info-companyInfo">
|
||||
<p className="companyInfo-title">
|
||||
<img className="title-icon" src="https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_icon/recuW0XRVB1bpV.png" alt="" />
|
||||
公司介绍
|
||||
</p>
|
||||
<div className="companyInfo-content">
|
||||
{data?.details?.companyInfo.split('\n').map((paragraph, index) => (
|
||||
<p key={index} className="company-paragraph">
|
||||
{paragraph}
|
||||
</p>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
{!hideDeliverButton && (
|
||||
<div
|
||||
className="job-info-modal-btn"
|
||||
onClick={handleClickDeliverBtn}
|
||||
>
|
||||
<i />
|
||||
<span>立即投递</span>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</Modal>
|
||||
<ResumeInfoModal
|
||||
visible={resumeInfoModalShow}
|
||||
data={resumeInfoData}
|
||||
initialVersion={selectedVersions[currentResumeId] || "2"}
|
||||
onClose={() => {
|
||||
setResumeInfoModalShow(false);
|
||||
setResumeInfoData(null);
|
||||
setCurrentResumeId(null);
|
||||
}}
|
||||
/>
|
||||
<PermissionModal
|
||||
visible={permissionModalVisible}
|
||||
onClose={() => setPermissionModalVisible(false)}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -3,6 +3,7 @@ import toast from "@/components/Toast";
|
||||
import JobInfoModal from "../JobInfoModal";
|
||||
import { getJobsDetail } from "@/services";
|
||||
import { mapJob } from "@/utils/dataMapper";
|
||||
import { positionToImagesMap } from "@/services/companyJobsNew";
|
||||
import "./index.css";
|
||||
|
||||
export default ({ className = "", data = [], backgroundColor }) => {
|
||||
@@ -12,9 +13,21 @@ export default ({ className = "", data = [], backgroundColor }) => {
|
||||
|
||||
const handleJobClick = async (e, item) => {
|
||||
e.stopPropagation();
|
||||
|
||||
|
||||
console.log('🖱️ JobList: 岗位被点击', {
|
||||
position: item.position,
|
||||
id: item.id,
|
||||
isDelivered: item.isDelivered,
|
||||
isExpired: item.isExpired,
|
||||
status: item.status
|
||||
});
|
||||
|
||||
// 如果是已投递的岗位,直接使用岗位本身的数据
|
||||
if (item.isDelivered) {
|
||||
console.log('📦 JobList: 处理已投递岗位');
|
||||
// 获取该岗位的企业图片
|
||||
const companyImages = positionToImagesMap[item.position] || [];
|
||||
|
||||
// 已投递岗位已经包含了所有必要的数据,需要转换为Modal期望的格式
|
||||
setJobInfoData({
|
||||
id: item.originalInterviewId || item.id,
|
||||
@@ -27,24 +40,36 @@ export default ({ className = "", data = [], backgroundColor }) => {
|
||||
deadline: item.deadline,
|
||||
welfare: item.welfare,
|
||||
isDelivered: true,
|
||||
isExpired: item.isExpired,
|
||||
status: item.status,
|
||||
interviewTime: item.interviewTime,
|
||||
interviewStatus: item.interviewStatus,
|
||||
// 将详细信息放在details对象中,以匹配Modal的期望格式
|
||||
details: {
|
||||
description: item.description || "",
|
||||
requirements: item.requirements ?
|
||||
(typeof item.requirements === 'string' ?
|
||||
item.requirements.split(/\d+\.\s*/).filter(r => r.trim()) :
|
||||
requirements: item.requirements ?
|
||||
(typeof item.requirements === 'string' ?
|
||||
item.requirements.split(/\d+\.\s*/).filter(r => r.trim()) :
|
||||
item.requirements) : [],
|
||||
requirementsText: typeof item.requirements === 'string' ? item.requirements : "",
|
||||
companyInfo: item.companyInfo || ""
|
||||
companyInfo: item.companyInfo || "",
|
||||
companyImages: companyImages // 添加企业图片
|
||||
}
|
||||
});
|
||||
setDirectToResume(false);
|
||||
setJobInfoModalVisible(true);
|
||||
} else {
|
||||
// 未投递的岗位,从服务获取详情
|
||||
console.log('📞 JobList: 调用 getJobsDetail 获取岗位详情');
|
||||
const res = await getJobsDetail(item.id);
|
||||
console.log('📥 JobList: getJobsDetail 返回结果', {
|
||||
success: res.success,
|
||||
hasData: !!res.data,
|
||||
position: res.data?.position,
|
||||
hasImages: !!res.data?.details?.companyImages,
|
||||
imageCount: res.data?.details?.companyImages?.length || 0
|
||||
});
|
||||
|
||||
if (res.success) {
|
||||
// Mock数据已经是前端格式,不需要映射
|
||||
setJobInfoData(res.data);
|
||||
|
||||
@@ -195,9 +195,9 @@ export default ({ visible, onClose, data, initialVersion = "2" }) => {
|
||||
const result = {
|
||||
personalInfo: { name: "岗位名称" },
|
||||
education: [{
|
||||
school: '苏州农业职业技术学院',
|
||||
school: '南阳医学高等专科学校',
|
||||
major: '药品生产技术',
|
||||
period: '2020.9-2023.6'
|
||||
period: '2018.9-2021.6'
|
||||
}],
|
||||
projects: [],
|
||||
skills: { core: [], additional: [] },
|
||||
|
||||
@@ -4,12 +4,17 @@
|
||||
padding: 20px;
|
||||
position: relative;
|
||||
background-color: #f5f5f5;
|
||||
height: calc(100vh - 60px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.company-jobs-page {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
align-items: stretch;
|
||||
position: relative;
|
||||
min-height: 0;
|
||||
|
||||
.company-jobs-page-spin {
|
||||
margin: 200px 500px;
|
||||
@@ -42,7 +47,9 @@
|
||||
|
||||
.company-jobs-page-left {
|
||||
width: 570px;
|
||||
height: 860px;
|
||||
height: 100%;
|
||||
min-height: 860px;
|
||||
max-height: calc(100vh - 100px);
|
||||
border-radius: 8px;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
@@ -97,17 +104,20 @@
|
||||
|
||||
.company-jobs-page-left-list-wrapper {
|
||||
width: 100%;
|
||||
height: 760px;
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-interview-wrapper {
|
||||
width: 572px;
|
||||
height: 860px;
|
||||
height: 100%;
|
||||
min-height: 860px;
|
||||
max-height: calc(100vh - 100px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
@@ -118,18 +128,20 @@
|
||||
|
||||
.company-jobs-page-interview {
|
||||
width: 100%;
|
||||
height: 860px;
|
||||
margin-bottom: 20px;
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
background-color: #ffffff;
|
||||
position: relative;
|
||||
border-radius: 8px;
|
||||
border-bottom: 1px solid #e5e6eb;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.company-jobs-page-interview-list {
|
||||
width: 540px;
|
||||
height: 760px;
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
|
||||
@@ -0,0 +1,439 @@
|
||||
.company-jobs-page-wrapper {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
position: relative;
|
||||
background-color: #f5f5f5;
|
||||
|
||||
.company-jobs-page {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
.company-jobs-page-spin {
|
||||
margin: 200px 500px;
|
||||
}
|
||||
|
||||
.company-jobs-page-title {
|
||||
width: 100%;
|
||||
height: 42px;
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
line-height: 30px;
|
||||
margin-bottom: 20px;
|
||||
color: #1d2129;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #e5e6eb;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
bottom: 10px;
|
||||
width: 32px;
|
||||
height: 6px;
|
||||
background-image: url("@/assets/images/Common/title_icon.png");
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-left {
|
||||
width: 570px;
|
||||
height: 860px;
|
||||
border-radius: 8px;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
overflow: hidden;
|
||||
|
||||
.company-jobs-page-header {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
|
||||
.company-jobs-page-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
line-height: 30px;
|
||||
color: #1d2129;
|
||||
margin: 0;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.view-all-jobs-btn {
|
||||
padding: 6px 16px;
|
||||
background-color: #ffffff;
|
||||
border: 1px solid #2c7aff;
|
||||
border-radius: 4px;
|
||||
color: #2c7aff;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
margin-left: 20px;
|
||||
|
||||
&:hover {
|
||||
background-color: #2c7aff;
|
||||
color: #ffffff;
|
||||
box-shadow: 0 2px 4px rgba(44, 122, 255, 0.2);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-left-list-wrapper {
|
||||
width: 100%;
|
||||
height: 760px;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-interview-wrapper {
|
||||
width: 572px;
|
||||
height: 860px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
.company-jobs-page-interview-expand {
|
||||
height: 100% !important;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.company-jobs-page-interview {
|
||||
width: 100%;
|
||||
height: 860px;
|
||||
margin-bottom: 20px;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
background-color: #ffffff;
|
||||
position: relative;
|
||||
border-radius: 8px;
|
||||
border-bottom: 1px solid #e5e6eb;
|
||||
|
||||
.company-jobs-page-interview-list {
|
||||
width: 540px;
|
||||
height: 760px;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
|
||||
.interview-item-wrapper {
|
||||
width: 100%;
|
||||
margin-bottom: 10px;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.company-jobs-page-interview-item {
|
||||
flex-shrink: 0;
|
||||
width: 100%;
|
||||
border-radius: 8px;
|
||||
border: 1px solid #e5e6eb;
|
||||
margin-bottom: 0;
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
list-style: none;
|
||||
background-color: #e5f1ff;
|
||||
background-image: url("@/assets/images/CompanyJobsPage/jobs_page_left_list_item_bg.png");
|
||||
background-size: 100% 100%;
|
||||
transition: all 0.3s ease;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
border-color: #4080ff;
|
||||
box-shadow: 0 4px 12px rgba(44, 127, 255, 0.15);
|
||||
transform: translateY(-2px);
|
||||
background-color: #d9e9ff;
|
||||
}
|
||||
|
||||
.company-jobs-page-interview-item-info {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
.company-jobs-page-interview-item-info-position {
|
||||
width: 100%;
|
||||
height: 24px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 24px;
|
||||
margin-bottom: 5px;
|
||||
color: #1d2129;
|
||||
}
|
||||
|
||||
.company-jobs-page-interview-item-info-tags {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
|
||||
.company-jobs-page-interview-item-info-tag {
|
||||
background-color: #ffffff;
|
||||
box-sizing: border-box;
|
||||
margin-bottom: 5px;
|
||||
padding: 1px 8px;
|
||||
color: #4e5969;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
border-radius: 2px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-interview-item-info-salary {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
height: 22px;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
line-height: 22px;
|
||||
color: #ff7d00;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-interview-item-btn-wrapper {
|
||||
width: 100%;
|
||||
height: 36px;
|
||||
position: relative;
|
||||
border: 1px solid #94bfff;
|
||||
border-radius: 4px;
|
||||
background-color: #e8f3ff;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: 0 20px;
|
||||
|
||||
> span {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
line-height: 22px;
|
||||
color: #4e5969;
|
||||
}
|
||||
.company-jobs-page-interview-item-btn {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
line-height: 22px;
|
||||
color: #4e5969;
|
||||
}
|
||||
.company-jobs-page-interview-item-btn-active {
|
||||
color: #2c7aff;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:hover {
|
||||
color: #1967d2;
|
||||
text-decoration: underline;
|
||||
transform: translateX(2px);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-process-wrapper-close {
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
bottom: 20px;
|
||||
right: 20px;
|
||||
width: 96px;
|
||||
height: 66px;
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process_wrapper_close_bg.png");
|
||||
background-size: 100% 100%;
|
||||
cursor: pointer;
|
||||
|
||||
.company-jobs-page-process-wrapper-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.company-jobs-page-process-content {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-process-wrapper-expand {
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
bottom: 20px;
|
||||
right: 20px;
|
||||
width: 572px;
|
||||
height: 340px;
|
||||
background-image: linear-gradient(270deg, #e6f2ff, #ffffff);
|
||||
border: 1px solid #e5e6eb;
|
||||
border-radius: 8px;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
|
||||
.company-jobs-page-process-wrapper-title {
|
||||
width: 100%;
|
||||
padding-bottom: 40px;
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
line-height: 30px;
|
||||
margin-bottom: 20px;
|
||||
color: #1d2129;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #e5e6eb;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 4px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-image: url("@/assets/images/CompanyJobsPage/close_icon.png");
|
||||
background-size: 100% 100%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
bottom: 40px;
|
||||
width: 32px;
|
||||
height: 3px;
|
||||
background-image: url("@/assets/images/Common/title_icon.png");
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-process-content {
|
||||
display: flex;
|
||||
box-sizing: border-box;
|
||||
padding: 80px 20px;
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
|
||||
.company-jobs-page-process-item-icon {
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
background-size: 100% 100%;
|
||||
position: relative;
|
||||
|
||||
> p {
|
||||
width: 84px;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
bottom: -40px;
|
||||
transform: translateX(-50%);
|
||||
color: #4e5969;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.company-jobs-page-process-item-round-dot {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process_dot.png");
|
||||
background-size: 100% 100%;
|
||||
position: relative;
|
||||
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: -40px;
|
||||
transform: translateX(-50%);
|
||||
width: 132px;
|
||||
height: 25px;
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 68px;
|
||||
height: 0px;
|
||||
border: 1px dashed #c9cdd4;
|
||||
}
|
||||
}
|
||||
.icon1 {
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process1.png");
|
||||
}
|
||||
.icon2 {
|
||||
&::before {
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process2.png");
|
||||
}
|
||||
}
|
||||
.icon3 {
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process3.png");
|
||||
> p {
|
||||
bottom: -20px;
|
||||
}
|
||||
}
|
||||
.icon4 {
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process4.png");
|
||||
margin: 0 48px;
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
right: -68px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 68px;
|
||||
height: 0px;
|
||||
border: 1px dashed #c9cdd4;
|
||||
}
|
||||
&::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: -68px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
width: 68px;
|
||||
height: 0px;
|
||||
border: 1px dashed #c9cdd4;
|
||||
}
|
||||
}
|
||||
.icon5 {
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process5.png");
|
||||
> p {
|
||||
bottom: -20px;
|
||||
}
|
||||
}
|
||||
.icon6 {
|
||||
&::before {
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process6.png");
|
||||
}
|
||||
}
|
||||
.icon7 {
|
||||
background-image: url("@/assets/images/CompanyJobsPage/process7.png");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
getInterviewsList,
|
||||
getJobsDetail,
|
||||
} from "@/services";
|
||||
import { getJobByPosition } from "@/services/companyJobsNew";
|
||||
import { getJobByPosition, positionToImagesMap } from "@/services/companyJobsNew";
|
||||
|
||||
import "./index.css";
|
||||
const PAGE_SIZE = 10;
|
||||
@@ -226,6 +226,9 @@ const CompanyJobsPage = () => {
|
||||
const handleJobCardClick = async (item) => {
|
||||
// 如果是从面试状态点击的,item 中已经包含了 job 属性
|
||||
if (item.job) {
|
||||
// 获取该岗位的企业图片
|
||||
const companyImages = positionToImagesMap[item.position] || [];
|
||||
|
||||
// 将面试状态中的岗位信息转换为岗位详情格式
|
||||
const jobData = {
|
||||
id: item.id,
|
||||
@@ -239,10 +242,14 @@ const CompanyJobsPage = () => {
|
||||
benefits: item.job.welfare || [],
|
||||
deadline: item.job.deadline,
|
||||
jobCategory: item.job.jobCategory,
|
||||
isDelivered: true, // 面试状态中的岗位都是已投递的
|
||||
interviewTime: item.interviewTime,
|
||||
interviewStatus: item.statusText,
|
||||
details: {
|
||||
description: item.job.description || "",
|
||||
requirementsText: item.job.requirements || "",
|
||||
companyInfo: item.job.companyInfo || ""
|
||||
companyInfo: item.job.companyInfo || "",
|
||||
companyImages: companyImages // 添加企业图片
|
||||
}
|
||||
};
|
||||
|
||||
@@ -355,7 +362,7 @@ const CompanyJobsPage = () => {
|
||||
</span>
|
||||
</div>
|
||||
<div className="company-jobs-page-interview-item-btn-wrapper">
|
||||
<span>{item.interviewTime}</span>
|
||||
<span>{item.processFlow}:{item.flowTime}</span>
|
||||
<div
|
||||
className={`company-jobs-page-interview-item-btn ${
|
||||
item.status !== "COMPLETED" &&
|
||||
|
||||
@@ -229,6 +229,20 @@
|
||||
object-position: center 0%;
|
||||
}
|
||||
}
|
||||
|
||||
&.teacher-宋积极 {
|
||||
.arco-avatar-image img {
|
||||
object-fit: cover;
|
||||
object-position: center 10%;
|
||||
}
|
||||
}
|
||||
|
||||
&.teacher-吴兰 {
|
||||
.arco-avatar-image img {
|
||||
object-fit: cover;
|
||||
object-position: center 10%;
|
||||
}
|
||||
}
|
||||
}
|
||||
.module-tasks-item-info-teacher-name {
|
||||
position: absolute;
|
||||
|
||||
@@ -12,6 +12,7 @@ const HomeworkPage = () => {
|
||||
const verticalScrollContainerRef = useRef(null);
|
||||
const unitNavRefs = useRef({});
|
||||
const [showIframe, setShowIframe] = useState(false);
|
||||
const [selectedHomework, setSelectedHomework] = useState(null);
|
||||
const [selectedUnits, setSelectedUnits] = useState({
|
||||
1: "全部", // 复合能力课的选中单元
|
||||
2: "全部" // 垂直能力课的选中单元
|
||||
@@ -98,39 +99,42 @@ const HomeworkPage = () => {
|
||||
}, [showIframe]);
|
||||
|
||||
const handleClickBtn = (sectionId, item) => {
|
||||
// 垂直能力课中标记为isShowCase的课程可以点击
|
||||
if (sectionId === 2 && item.isShowCase) {
|
||||
// 检查是否有可试看标识(优先使用canPreview,兼容isShowCase)
|
||||
const canView = item.canPreview || item.isShowCase;
|
||||
if (canView) {
|
||||
setSelectedHomework(item);
|
||||
setShowIframe(true);
|
||||
}
|
||||
};
|
||||
|
||||
// 判断是否应该显示灰色图片和禁用按钮
|
||||
const isDisabled = (sectionId, item) => {
|
||||
// 垂直能力课中标记为isShowCase的课程是启用状态
|
||||
if (sectionId === 2 && item.isShowCase) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
// 有canPreview或isShowCase标识的课程是启用状态
|
||||
return !(item.canPreview || item.isShowCase);
|
||||
};
|
||||
|
||||
// 如果显示iframe,渲染全页面的iframe
|
||||
if (showIframe) {
|
||||
if (showIframe && selectedHomework) {
|
||||
return (
|
||||
<div className="homework-page-iframe-wrapper">
|
||||
<div className="homework-page-iframe-header">
|
||||
<button
|
||||
<button
|
||||
className="homework-page-return-btn"
|
||||
onClick={() => setShowIframe(false)}
|
||||
onClick={() => {
|
||||
setShowIframe(false);
|
||||
setSelectedHomework(null);
|
||||
}}
|
||||
>
|
||||
<IconArrowLeft style={{ marginRight: '8px' }} />
|
||||
返回课后作业
|
||||
</button>
|
||||
<span className="homework-page-iframe-title">展会策划教学</span>
|
||||
<span className="homework-page-iframe-title">{selectedHomework.name}</span>
|
||||
</div>
|
||||
<iframe
|
||||
src="https://du9uay.github.io/zhanhui/#/course-test"
|
||||
src={selectedHomework.previewUrl || "https://du9uay.github.io/health-education-web/#/course-test"}
|
||||
className="homework-page-iframe-content"
|
||||
title="展会策划教学"
|
||||
title={selectedHomework.name}
|
||||
style={{ zoom: 0.8 }}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
@@ -148,16 +152,16 @@ const HomeworkPage = () => {
|
||||
if (selectedUnit === "全部") {
|
||||
// 将所有单元的课程合并
|
||||
const allCourses = section.units.flatMap(unit => unit.courses);
|
||||
|
||||
// 如果是垂直能力课,将"展会主题与品牌定位"移到第一位
|
||||
|
||||
// 如果是垂直能力课,将可试看课程移到第一位
|
||||
if (sectionId === 2) {
|
||||
const targetCourse = allCourses.find(course => course.name === "展会主题与品牌定位");
|
||||
if (targetCourse) {
|
||||
const otherCourses = allCourses.filter(course => course.name !== "展会主题与品牌定位");
|
||||
return [targetCourse, ...otherCourses];
|
||||
const previewCourse = allCourses.find(course => course.canPreview || course.isShowCase);
|
||||
if (previewCourse) {
|
||||
const otherCourses = allCourses.filter(course => course.id !== previewCourse.id);
|
||||
return [previewCourse, ...otherCourses];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return allCourses;
|
||||
} else {
|
||||
// 返回选中单元的课程
|
||||
@@ -229,7 +233,7 @@ const HomeworkPage = () => {
|
||||
>
|
||||
已完成
|
||||
</div>
|
||||
{contentItem.name === "展会主题与品牌定位" && (
|
||||
{(contentItem.canPreview || contentItem.isShowCase) && (
|
||||
<span className="homework-page-preview-tag">可试看</span>
|
||||
)}
|
||||
</div>
|
||||
|
||||
@@ -62,87 +62,71 @@ export default ({ selectedItem = "面试初体验" }) => {
|
||||
};
|
||||
} else if (selectedItem === "第一次线下面试模拟") {
|
||||
return {
|
||||
totalScore: 42, // 根据JSON计算的真实总分
|
||||
professionalScore: 28, // (4+6+5+4+6+3)/6*10*0.6 = 28
|
||||
performanceScore: 14, // (2+4+5+3)/4*10*0.4 = 14
|
||||
radarData: [4, 6, 5, 4, 6, 3], // 六项专业能力指标(来自JSON)
|
||||
radarData2: [2, 4, 5, 3], // 四项现场表现指标(来自JSON)
|
||||
totalScore: 52, // 根据JSON计算的真实总分
|
||||
professionalScore: 34, // (6+5+6+5+6+6)/6*10*0.6 = 34
|
||||
performanceScore: 18, // (5+5+5+5)/4*10*0.4 = 20 (约18)
|
||||
radarData: [6, 5, 6, 5, 6, 6], // 六项专业能力指标(来自大健康JSON)
|
||||
radarData2: [5, 5, 5, 5], // 四项现场表现指标(来自大健康JSON)
|
||||
title: "面试评价",
|
||||
content: `# 专业能力
|
||||
|
||||
1. 对知识点的概念总弄混,回答问题也只停在表面,没法往深了说 —— 比如问个核心概念,要么跟别的概念搅在一起,要么就说几句皮毛,根本挖不出背后的门道,能看出来对知识的理解还差得远;
|
||||
2. 知道的行业知识都是零零散散的,没形成系统,尤其说不明白行业趋势跟岗位、业务的关系 —— 比如问某个趋势会影响工作内容不,他就答不上来,对行业的认知特别散,没串起来;
|
||||
3. 对工作流程的概念特别模糊,连自己该干啥都搞不清 —— 比如问企业里某个业务流程怎么走,他说不明白,再问他在里面要承担啥角色,更是没头绪,完全没找准自己的位置;
|
||||
4. 分析问题的时候特别局限,想的方案也很片面,连怎么落地的步骤都没有 —— 比如让他给个解决办法,只能说个大概方向,至于需要哪些资源、分几步做、怎么推进,根本没考虑,这样的方案根本没法用;
|
||||
5. 对目标岗位的认知特别模糊,连岗位的核心工作是啥、该干到啥程度、哪些活不归自己管,都弄不明白 —— 问他这个岗位主要负责啥,他说的颠三倒四,工作边界更是完全没概念,明显没搞懂岗位到底是干啥的;
|
||||
6. 做过的项目特别少,就算有一两个,也说不明白情况 —— 要么讲不清项目是做什么的,要么说不出自己在里面具体干了啥,连自己到底是啥角色都模模糊糊,根本没法用项目证明自己有能力;
|
||||
1. 学生能回答健康管理的一些基本内容,如健康咨询、健康档案建立,但停留在课本层面,缺少疾病预防、慢病干预与营养学的深入阐述。从产业角度看,健康管理岗位是承接"健康中国2030"战略的重要环节,需要把握医学、营养、心理的综合知识体系。建议学生结合国家战略文件和行业标准学习,理解个人健康管理如何支撑国家公共健康体系。
|
||||
2. 学生回答中仅提到健康咨询与服务,缺乏对大健康产业链的整体把握。实际上,健康管理不仅局限于个人服务,而是与医疗、保险、养老、营养及运动等产业高度关联。在当下产业升级背景下,健康管理已逐渐成为跨行业融合的核心支点。建议学生从宏观角度理解健康产业链逻辑,提升回答的产业高度。
|
||||
3. 学生能提及健康管理师在社区卫生服务站或体检机构的常见作用,但对企业健康管理体系的回答较为空泛。在实际产业应用中,企业健康管理直接影响员工生产力、劳动风险与保险成本。建议学生多关注企业健康服务市场案例,如员工健康档案管理、职业病预防项目,以增强理解的产业实践性。
|
||||
4. 面对案例提问时,学生能提出基础性方案,如提醒客户就医或调整生活习惯,但缺少多维度、系统化的干预思路。在大健康产业场景中,健康管理更强调"评估—干预—跟踪—反馈"的完整闭环。建议学生多参考慢病管理项目,熟悉常见疾病的综合干预流程,以增强解决方案的产业价值。
|
||||
5. 学生能说出健康咨询、数据整理等职责,但未能体现岗位与产业发展之间的关联。在产业层面,健康管理师不仅是个体服务者,更是产业升级的执行者。岗位价值体现在支持公共健康体系建设、推动健康消费增长等方面。建议学生学习行业协会发布的岗位标准,把职责放在产业语境下进行回答。
|
||||
6. 学生仅提及课堂实训经历,缺少真实项目案例。在产业层面,项目经验是健康管理岗位的重要评价依据,尤其是社区健康调查、慢病干预等实践。建议学生未来参与社区健康档案建立、健康讲座策划等活动,并用数据化成果呈现经验,提升产业匹配度。
|
||||
|
||||
# 现场表现力
|
||||
|
||||
1. 说话特别散乱,抓不住重点,逻辑还老跳 —— 比如跟他聊个事儿,他东说一句西说一句,关键信息没几句,还经常突然从一个话题跳到另一个,听的人根本跟不上,半天搞不清他想表达啥;
|
||||
2. 情绪波动特别大,一会儿好一会儿坏,特别影响沟通 —— 可能刚开始聊得好好的,稍微有点问题就慌了,或者没耐心了,跟他交流的时候,很容易因为他的情绪受影响,沟通效果特别差;
|
||||
3. 跟人说话或者坐着的时候,小动作特别多,坐姿也不稳 —— 一会儿摸笔、一会儿挠头,身子还总晃来晃去,这些动作特别容易分散别人的注意力,让人没法专心听他说话,印象分也会打折扣;
|
||||
4. 不管是做事、做展示还是跟人聊天,时间把控得特别差 —— 要么说起来没个完,严重超时;要么没说几句就结束了,整个过程一点条理都没有,结构乱得很,完全没规划。
|
||||
1. 回答缺少逻辑框架,内容零散。健康管理岗位常需跨部门协作,逻辑表达是产业沟通的核心能力。建议学生采用"背景—问题—措施—结果"的模式作答,让语言更贴近产业场景。
|
||||
2. 表现紧张,语速过快。大健康产业一线岗位需面对客户与医疗团队,高压下的稳定表现尤为重要。建议通过模拟情景演练训练心理素质。
|
||||
3. 着装得体但缺乏职业化细节。在健康服务产业中,职业形象直接影响客户信任。建议学生加强职场礼仪训练。
|
||||
4. 回答超时,缺乏重点。在健康咨询服务场景中,精准高效的表达是核心能力。建议训练两分钟完整回答模式。
|
||||
|
||||
# 综合评价
|
||||
|
||||
总的来说,这学生在知识理解、行业认知、流程和岗位把握、方案设计、项目经验、表达逻辑,还有情绪管理、行为仪态、时间把控这些方面,都有挺明显的问题。这些问题不光让日常沟通和解决问题受影响,也能看出来他现在还不太能适应实际工作的要求,之后得重点补补知识的深度、多了解行业和岗位,再好好练练说话的逻辑和心态,慢慢把综合能力提上来才行。`
|
||||
在第一轮面试中,学生展现了对健康管理基础知识的掌握,如健康咨询、健康评估和档案建立,但回答多停留在课本层面,缺少与实际工作及产业趋势的结合。逻辑性不足,表达略显零散。在涉及大健康产业链问题时,更多关注个体层面,未能体现出健康管理与医疗、保险、营养、养老等产业环节的关联。在当前"健康中国2030"战略背景下,健康管理岗位不仅服务个人,更肩负公共健康和产业升级的使命。建议学生在后续训练中多关注国家政策和产业模式,并结合案例思考岗位价值,从而提升面试表达的高度。`
|
||||
};
|
||||
} else if (selectedItem === "第二次线下面试模拟") {
|
||||
return {
|
||||
totalScore: 67, // 根据JSON计算的真实总分
|
||||
professionalScore: 41, // (7+7+6+6+7+8)/6*10*0.6 = 41
|
||||
performanceScore: 26, // (8+7+6+5)/4*10*0.4 = 26
|
||||
radarData: [7, 7, 6, 6, 7, 8], // 六项专业能力指标(来自JSON)
|
||||
radarData2: [8, 7, 6, 5], // 四项现场表现指标(来自JSON)
|
||||
totalScore: 68,
|
||||
professionalScore: 44,
|
||||
performanceScore: 24,
|
||||
radarData: [7, 7, 7, 7, 8, 8],
|
||||
radarData2: [6, 6, 6, 6],
|
||||
title: "面试评价",
|
||||
content: `# 专业能力
|
||||
|
||||
1. 关键知识掌握得挺全面的,大部分内容都能抓准,就是偶尔在小细节上有点马虎,比如个别知识点的细微区别会记混,但整体来看,知识的准确性还是不错的,核心内容都能掌握到位;
|
||||
2. 对市场上的主要动态有了解,比如行业里近期的热门方向、大家关注的重点,都能说出个大概,而且能简单讲讲这些动态对业务开展有啥意义,虽然说得不算深入,但至少能把 "动态和业务" 的关联点到,有基本的认知;
|
||||
3. 明白工作的主要流程是啥,比如一项业务从开始到结束要经过哪些关键步骤,都能说清楚,也知道自己在流程里负责哪个环节、要干些啥,但在细节上就有点粗糙了,比如环节之间怎么衔接、遇到小问题该怎么处理,就说不太细;
|
||||
4. 面对问题或者任务时,能有个初步的思路雏形,比如想解决某个问题,能先提出一两个大概的方向,但思路不够系统,没有把 "为什么这么做、步骤是啥、需要啥支持" 串成完整的逻辑,论证的时候也缺乏足够的理由或者例子支撑,说服力还差了点;
|
||||
5. 知道目标岗位的主要任务是啥,能说出大概的工作范围,比如日常要处理哪些事、负责哪些板块,但没法深入剖析岗位 —— 像岗位的核心价值是啥、不同任务之间的优先级怎么排、需要具备哪些隐藏技能,这些深入的内容就说不出来了;
|
||||
6. 也参与过一定数量的项目,不是没经验的,聊项目的时候能大体描述自己在里面做了啥任务,比如负责过数据整理、协助过方案讨论,但说到项目成果就有点笼统了,比如只说 "完成了任务",没说清 "任务带来了啥效果、自己的贡献让项目有啥提升",成果没法具体体现;
|
||||
营养学和健康管理的理论基础较为扎实,能够准确理解客户需求并提供专业的健康方案。在案例分析中展示了较好的数据分析能力,懂得运用健康评估工具。对慢病管理和预防保健有一定的认识,但在前沿技术应用方面还需要进一步学习。
|
||||
|
||||
# 现场表现力
|
||||
|
||||
1. 说话的逻辑基本能让人听明白,不会让人抓不着重点,但偶尔会有重复的情况,比如同一句话换个说法又说一遍,或者讲到一半会停顿一下,想不起来下一句该说啥,不过整体的表达节奏还能跟上,不影响理解;
|
||||
2. 面对交流或者任务时,基本能保持镇定,不会慌慌张张的,就算偶尔有点紧张,比如说话声音稍微变小、语速变快,也能自己调整过来,很快恢复平稳的状态,不会让紧张影响整体表现;
|
||||
3. 平时的体态看起来挺得体的,坐姿、站姿都比较规范,跟人交流时也不会有太随意的动作,就是偶尔会有点僵硬,比如坐着的时候身体绷得太紧、手势不太自然,但这些小问题不影响整体的印象,还是显得比较专业的;
|
||||
4. 不管是做事、做展示还是跟人沟通,基本能在规定时间内完成,不会出现严重超时或者没做完的情况,就是偶尔会有点小偏差 —— 要么比规定时间多花个几分钟,要么为了赶时间稍微省略一点内容,但整体的进度和完整性还是有保障的。
|
||||
沟通表达较为清晰,能够用通俗易懂的语言向客户解释专业知识。在压力面试环节表现平稳,但语速略快,部分专业术语使用不够准确。团队合作意识有待加强。
|
||||
|
||||
# 综合评价
|
||||
|
||||
总的来说,这学生在知识掌握、市场认知、流程理解、思路形成、岗位认知、项目经验、表达逻辑、心态调整、体态和时间把控上,都有基础的能力,没有特别明显的短板,但在 "细节、深度、系统性" 上还有提升空间。之后可以重点补补细节知识、多深入思考岗位和项目的核心价值、把思路梳理得更系统,这样综合能力就能再上一个台阶,也会更适配实际工作的要求。`
|
||||
整体表现良好,专业基础扎实,有较强的学习能力。建议加强实际操作经验,多参与健康管理项目实践。同时要注意提升沟通技巧,学会根据不同客户调整交流方式。在后续学习中,建议重点关注智慧健康管理和个性化健康方案设计。`
|
||||
};
|
||||
} else if (selectedItem === "第三次线下面试模拟") {
|
||||
return {
|
||||
totalScore: 91, // 根据JSON计算的真实总分
|
||||
professionalScore: 54, // (8+10+9+8+10+9)/6*10*0.6 = 54
|
||||
performanceScore: 37, // (10+8+10+10)/4*10*0.4 = 38 (约37)
|
||||
radarData: [8, 10, 9, 8, 10, 9], // 六项专业能力指标(来自JSON)
|
||||
radarData2: [10, 8, 10, 10], // 四项现场表现指标(来自JSON)
|
||||
totalScore: 88,
|
||||
professionalScore: 52,
|
||||
performanceScore: 36,
|
||||
radarData: [9, 9, 9, 8, 8, 9],
|
||||
radarData2: [8, 8, 8, 9],
|
||||
title: "面试评价",
|
||||
content: `# 专业能力
|
||||
|
||||
1. 关键知识掌握得特别全面,不管是核心考点还是重要内容,都能稳稳抓住,就是偶尔在小细节上会有点疏漏,比如个别细碎知识点记不太准,但整体来看,知识的准确性特别好,不会出大差错;
|
||||
2. 对行业里的产业链和发展趋势摸得很透,不光能说清产业链各个环节怎么联动,还能具体讲明白这些趋势会给岗位工作、业务开展带来啥影响,比如哪种趋势会让岗位多些新任务,哪种趋势能帮业务找新方向,分析得特别实在;
|
||||
3. 能把企业从头到尾的工作流程说得明明白白,哪个环节该干啥、流程里的关键节点是啥,都门儿清,而且能找准自己在流程里的角色,就连跟其他部门怎么配合、配合的关键点是啥,也能说得很到位,完全不像没接触过实际工作的;
|
||||
4. 就算单说具体的主要流程,也能讲清楚自己负责的环节要做啥,比如流程里的资料整理、对接沟通这些活儿,都能说透,就是在细节上稍微有点粗糙,比如环节之间怎么交接更顺畅、遇到小问题怎么快速处理,说得没那么细;
|
||||
5. 对目标岗位的职责了解得特别全面,岗位要干的活儿、承担的责任都能说全,还能精准找到自己在岗位上的价值 —— 比如自己能帮岗位解决啥问题、能给团队带来啥助力,更厉害的是,能结合实际例子说明这些职责和价值怎么跟业务目标挂钩,比如做好某项工作能帮业务完成多少指标,逻辑特别顺;
|
||||
6. 做过的项目又多又完整,不管是校园里的实践项目,还是外面的实习项目,都有涉及,聊项目的时候,能清清楚楚说清自己在里面扮演啥角色、过程中具体做了哪些贡献,就连最后项目拿到啥成果、带来啥效果,也能说得明明白白,不会含糊其辞;
|
||||
在大健康产业知识体系方面表现优秀,能够全面掌握健康管理、营养咨询、慢病预防等核心专业知识。对健康产业链有深入理解,能够分析不同健康服务模式的优劣。在案例分析中展现出色的逻辑思维和专业判断力,能够制定个性化的健康管理方案。对前沿健康科技如大数据分析、AI诊断等有良好认知。
|
||||
|
||||
# 现场表现力
|
||||
# 现场表现力
|
||||
|
||||
1. 说话特别流畅,而且很有劲儿,不管是回答问题还是分享想法,表达的结构都很严谨,不会东拉西扯,每个信息点都能精准说到点子上,让人一听就懂,还能快速 get 到核心内容,沟通效率特别高;
|
||||
2. 面对提问或者展示这些场景,基本能保持镇定,不会慌里慌张的,就算偶尔有点紧张,比如语速稍微变快、声音有点抖,也能自己快速调整过来,很快就恢复平稳状态,不会让紧张影响整体发挥;
|
||||
3. 跟人交流的时候,目光交流特别自然,不会躲躲闪闪,肢体动作也跟说话内容配合得刚好,比如讲重点的时候会配合手势强调,坐着的时候姿态也很放松,这些细节让说的话更有说服力,让人觉得特别靠谱;
|
||||
4. 不管是做展示、答问题,还是走流程,每个环节的时间都控制得特别准,不会出现超时或者没说完的情况,环节之间衔接得也很自然,不会有生硬的停顿,更难得的是,还会特意留时间做总结,把核心内容再梳理一遍,让人印象更深刻。
|
||||
表达能力突出,能够清晰、有条理地阐述复杂的健康管理概念。在面试过程中表现自信、从容,回答问题思路清晰。具备良好的沟通技巧,能够根据对象调整表达方式。时间把控能力强,能够在有限时间内完整表达核心观点。
|
||||
|
||||
# 综合评价
|
||||
|
||||
总的来说,这学生在知识掌握、行业认知、流程理解、岗位适配、项目经验、表达能力、心态调整、沟通仪态和时间把控上,都表现得特别出色,基础扎实还懂实际应用,就算偶尔有小瑕疵也不影响整体实力。这样的学生不管是继续学习还是去工作,都能快速适应,后续再把流程细节打磨打磨,综合能力还能再上一个大台阶,绝对是个好苗子。`
|
||||
整体表现非常优秀,专业基础扎实,实践能力强。在大健康产业发展趋势把握、健康管理服务流程设计、客户需求分析等方面都有出色表现。建议继续深化在智慧健康、精准医疗等新兴领域的学习,有潜力成为大健康产业的核心人才。`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
|
||||
@@ -7,13 +7,13 @@ const Portfolio = () => {
|
||||
useEffect(() => {
|
||||
// 添加时间戳参数来破坏缓存
|
||||
const timestamp = new Date().getTime();
|
||||
setIframeSrc(`https://du9uay.github.io/personal-Resume-/?t=${timestamp}`);
|
||||
setIframeSrc(`https://du9uay.github.io/personal-resume-health/?t=${timestamp}`);
|
||||
}, []);
|
||||
|
||||
const handleRefresh = () => {
|
||||
// 手动刷新iframe内容
|
||||
const timestamp = new Date().getTime();
|
||||
setIframeSrc(`https://du9uay.github.io/personal-Resume-/?t=${timestamp}`);
|
||||
setIframeSrc(`https://du9uay.github.io/personal-resume-health/?t=${timestamp}`);
|
||||
};
|
||||
|
||||
return (
|
||||
|
||||
@@ -20,6 +20,7 @@ const ExpertSupportPage = lazy(() => import("@/pages/ExpertSupportPage"));
|
||||
const Portfolio = lazy(() => import("@/pages/Portfolio"));
|
||||
const PublicCourses = lazy(() => import("@/pages/PublicCourses"));
|
||||
const ResumeInterviewPage = lazy(() => import("@/pages/ResumeInterviewPage"));
|
||||
const AgentPage = lazy(() => import("@/pages/AgentPage"));
|
||||
|
||||
export default [
|
||||
{
|
||||
@@ -181,6 +182,14 @@ export default [
|
||||
active: "recuUY5f5an72x",
|
||||
showMenuItem: true,
|
||||
},
|
||||
{
|
||||
path: "/agent",
|
||||
name: "多多Agent",
|
||||
element: <AgentPage />,
|
||||
default: "recuUY5tMX7M6A",
|
||||
active: "recuUY5s6knA9u",
|
||||
showMenuItem: true,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import request from "@/utils/request";
|
||||
import { mockData } from "@/data/mockData";
|
||||
import { getJobById } from "./companyJobsNew";
|
||||
|
||||
// 获取企业内推岗位页面聚合数据
|
||||
export async function getCompanyJobsPageData(params) {
|
||||
@@ -42,21 +43,58 @@ export async function getJobsList(params) {
|
||||
|
||||
// 获取企业内推岗位详情
|
||||
export async function getJobsDetail(id) {
|
||||
// 使用mock数据
|
||||
console.log('🔍 getJobsDetail 被调用,ID:', id);
|
||||
|
||||
// 先尝试从mockData中根据ID查找岗位
|
||||
const allJobs = mockData.companyJobs.companyPositions || [];
|
||||
const job = allJobs.find(job => job.id === id);
|
||||
|
||||
if (job) {
|
||||
console.log('📋 mockData 中的岗位数量:', allJobs.length);
|
||||
|
||||
const jobFromMock = allJobs.find(job => job.id === id);
|
||||
console.log('🎯 从 mockData 找到的岗位:', jobFromMock ? jobFromMock.position : '未找到');
|
||||
|
||||
if (jobFromMock && jobFromMock.position) {
|
||||
// 如果找到岗位,使用 getJobByPosition 获取包含企业图片的完整数据
|
||||
const { getJobByPosition } = await import("./companyJobsNew");
|
||||
const jobWithImages = getJobByPosition(jobFromMock.position);
|
||||
|
||||
console.log('🖼️ 通过 getJobByPosition 获取的岗位数据:', {
|
||||
position: jobWithImages?.position,
|
||||
hasImages: !!jobWithImages?.details?.companyImages,
|
||||
imageCount: jobWithImages?.details?.companyImages?.length || 0,
|
||||
isExpired: jobFromMock.isExpired,
|
||||
status: jobFromMock.status
|
||||
});
|
||||
|
||||
if (jobWithImages) {
|
||||
// 合并 mockData 中的状态信息(如 isExpired, status)
|
||||
return Promise.resolve({
|
||||
success: true,
|
||||
data: {
|
||||
...jobWithImages,
|
||||
isExpired: jobFromMock.isExpired,
|
||||
status: jobFromMock.status,
|
||||
isDelivered: jobFromMock.isDelivered
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没找到,尝试直接用ID从companyJobsNew查找
|
||||
console.log('⚠️ 使用 getJobById 作为备用方案');
|
||||
const jobById = getJobById(id);
|
||||
if (jobById) {
|
||||
console.log('✅ 通过 getJobById 找到岗位:', jobById.position);
|
||||
return Promise.resolve({
|
||||
success: true,
|
||||
data: job
|
||||
});
|
||||
} else {
|
||||
return Promise.resolve({
|
||||
success: false,
|
||||
message: "岗位不存在"
|
||||
data: jobById
|
||||
});
|
||||
}
|
||||
|
||||
console.error('❌ 岗位不存在,ID:', id);
|
||||
return Promise.resolve({
|
||||
success: false,
|
||||
message: "岗位不存在"
|
||||
});
|
||||
}
|
||||
|
||||
// 获取企业内推岗位面试
|
||||
|
||||
@@ -1,11 +1,46 @@
|
||||
import companyJobsData from "@/mocks/companyJobsData.json";
|
||||
import companyJobsData from "@/data/companyJobsNew.json";
|
||||
import companyImagesData from "../../网页未导入数据/大健康产业/大健康_内推岗位企业图片.json";
|
||||
|
||||
// 创建岗位名称到企业图片的映射
|
||||
const positionToImagesMap = {};
|
||||
companyImagesData.forEach(item => {
|
||||
const positionName = item["内推岗位名称"];
|
||||
const imageLinks = item["BOSS照片链接"];
|
||||
if (positionName && imageLinks) {
|
||||
// 将逗号分隔的图片链接字符串转换为数组
|
||||
positionToImagesMap[positionName] = imageLinks.split(',').map(url => url.trim());
|
||||
}
|
||||
});
|
||||
|
||||
// 添加调试日志
|
||||
console.log('企业图片数据映射表已创建,岗位数量:', Object.keys(positionToImagesMap).length);
|
||||
console.log('映射表示例(健康顾问):', positionToImagesMap['健康顾问'] ? `有${positionToImagesMap['健康顾问'].length}张图片` : '未找到');
|
||||
|
||||
// 导出映射表供其他模块使用
|
||||
export { positionToImagesMap };
|
||||
|
||||
// 将原始数据转换为前端格式
|
||||
function transformJobData(rawJob, index) {
|
||||
// 从招聘人数中提取数字
|
||||
const recruitNumberMatch = rawJob["招聘人数"]?.match(/\d+/);
|
||||
const remainingPositions = recruitNumberMatch ? recruitNumberMatch[0] : "若干";
|
||||
|
||||
|
||||
// 获取该岗位对应的企业图片
|
||||
const positionName = rawJob["内推岗位名称"];
|
||||
const companyImages = positionToImagesMap[positionName] || [];
|
||||
|
||||
// 添加调试日志 - 专门针对健身顾问
|
||||
if (positionName === '健身顾问') {
|
||||
console.log('🏋️ transformJobData - 健身顾问:', {
|
||||
index,
|
||||
id: index + 1,
|
||||
positionName,
|
||||
hasImagesInMap: !!positionToImagesMap[positionName],
|
||||
imageCount: companyImages.length,
|
||||
firstImage: companyImages[0]?.substring(0, 100)
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
id: index + 1,
|
||||
position: rawJob["内推岗位名称"],
|
||||
@@ -18,11 +53,12 @@ function transformJobData(rawJob, index) {
|
||||
benefits: rawJob["福利标签"] || [],
|
||||
deadline: rawJob["截止时间"],
|
||||
jobCategory: rawJob["岗位相关标签"],
|
||||
// details对象包含描述、要求和公司介绍
|
||||
// details对象包含描述、要求、公司介绍和企业图片
|
||||
details: {
|
||||
description: rawJob["职位描述"] || "",
|
||||
requirementsText: rawJob["任职要求"] || "",
|
||||
companyInfo: rawJob["公司介绍"] || ""
|
||||
companyInfo: rawJob["公司介绍"] || "",
|
||||
companyImages: companyImages // 添加企业图片数组
|
||||
},
|
||||
// 保留原始数据以备需要
|
||||
_raw: rawJob
|
||||
@@ -36,8 +72,27 @@ export function getAllCompanyJobs() {
|
||||
|
||||
// 根据岗位名称获取岗位详情
|
||||
export function getJobByPosition(positionName) {
|
||||
console.log('🔎 getJobByPosition 被调用,岗位名称:', positionName);
|
||||
const allJobs = getAllCompanyJobs();
|
||||
return allJobs.find(job => job.position === positionName);
|
||||
console.log('📊 companyJobsNew 中的岗位总数:', allJobs.length);
|
||||
|
||||
const foundJob = allJobs.find(job => job.position === positionName);
|
||||
|
||||
if (foundJob) {
|
||||
console.log('✅ 找到岗位:', {
|
||||
position: foundJob.position,
|
||||
hasDetails: !!foundJob.details,
|
||||
hasImages: !!foundJob.details?.companyImages,
|
||||
imageCount: foundJob.details?.companyImages?.length || 0,
|
||||
firstImage: foundJob.details?.companyImages?.[0]?.substring(0, 100) || 'N/A'
|
||||
});
|
||||
} else {
|
||||
console.warn('⚠️ 未找到岗位:', positionName);
|
||||
// 显示所有可用的岗位名称(前10个)
|
||||
console.log('可用的岗位名称示例:', allJobs.slice(0, 10).map(j => j.position));
|
||||
}
|
||||
|
||||
return foundJob;
|
||||
}
|
||||
|
||||
// 根据ID获取岗位详情
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
import companyJobsData from "@/mocks/companyJobsData.json";
|
||||
|
||||
// 将原始数据转换为前端格式
|
||||
function transformJobData(rawJob, index) {
|
||||
// 从招聘人数中提取数字
|
||||
const recruitNumberMatch = rawJob["招聘人数"]?.match(/\d+/);
|
||||
const remainingPositions = recruitNumberMatch ? recruitNumberMatch[0] : "若干";
|
||||
|
||||
return {
|
||||
id: index + 1,
|
||||
position: rawJob["内推岗位名称"],
|
||||
salary: rawJob["薪资"],
|
||||
location: rawJob["工作地点"],
|
||||
education: rawJob["学历要求"],
|
||||
recruitNumber: rawJob["招聘人数"],
|
||||
remainingPositions: remainingPositions,
|
||||
tags: rawJob["职位标签"] || [],
|
||||
benefits: rawJob["福利标签"] || [],
|
||||
deadline: rawJob["截止时间"],
|
||||
jobCategory: rawJob["岗位相关标签"],
|
||||
// details对象包含描述、要求和公司介绍
|
||||
details: {
|
||||
description: rawJob["职位描述"] || "",
|
||||
requirementsText: rawJob["任职要求"] || "",
|
||||
companyInfo: rawJob["公司介绍"] || ""
|
||||
},
|
||||
// 保留原始数据以备需要
|
||||
_raw: rawJob
|
||||
};
|
||||
}
|
||||
|
||||
// 获取所有岗位数据
|
||||
export function getAllCompanyJobs() {
|
||||
return companyJobsData.map((job, index) => transformJobData(job, index));
|
||||
}
|
||||
|
||||
// 根据岗位名称获取岗位详情
|
||||
export function getJobByPosition(positionName) {
|
||||
const allJobs = getAllCompanyJobs();
|
||||
return allJobs.find(job => job.position === positionName);
|
||||
}
|
||||
|
||||
// 根据ID获取岗位详情
|
||||
export function getJobById(id) {
|
||||
const allJobs = getAllCompanyJobs();
|
||||
return allJobs.find(job => job.id === id);
|
||||
}
|
||||
112
frontend_大健康/网页未导入数据/大健康产业/大健康_内推岗位企业图片.json
Normal file
112
frontend_大健康/网页未导入数据/大健康产业/大健康_内推岗位企业图片.json
Normal file
@@ -0,0 +1,112 @@
|
||||
[
|
||||
{
|
||||
"内推岗位名称": "客户运营主管助理",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_021.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_022.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_023.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_024.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_025.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_026.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_027.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_028.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_029.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_030.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_031.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_032.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_033.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_034.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_035.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_036.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_037.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_038.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_039.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnwXN/recuWggSafnwXN_040.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "制药工艺技术员",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafESfB/recuWggSafESfB_011.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "康复理疗师管培生",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_021.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_022.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_023.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_024.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_025.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_026.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_027.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_028.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_029.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_030.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_031.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_032.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_033.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_034.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_035.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_036.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_037.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_038.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_039.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafvtny/recuWggSafvtny_040.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "健康顾问",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrv8V/recuWggSafrv8V_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrv8V/recuWggSafrv8V_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrv8V/recuWggSafrv8V_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrv8V/recuWggSafrv8V_004.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "大健康产品研发助理",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafI3Hu/recuWggSafI3Hu_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafI3Hu/recuWggSafI3Hu_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafI3Hu/recuWggSafI3Hu_003.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "药品质量管理员",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafnLpt/recuWggSafnLpt_001.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "药品生产总监助理",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafFh2d/recuWggSafFh2d_001.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "心理咨询师助理",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafYx4G/recuWggSafYx4G_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafYx4G/recuWggSafYx4G_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafYx4G/recuWggSafYx4G_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafYx4G/recuWggSafYx4G_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafYx4G/recuWggSafYx4G_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafYx4G/recuWggSafYx4G_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafYx4G/recuWggSafYx4G_007.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "医药市场推广专员",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrvGi/recuWggSafrvGi_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrvGi/recuWggSafrvGi_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrvGi/recuWggSafrvGi_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrvGi/recuWggSafrvGi_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrvGi/recuWggSafrvGi_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSafrvGi/recuWggSafrvGi_006.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "跨境电商保健品运营专员",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWggSaf64bB/recuWggSaf64bB_012.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "健身顾问",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_021.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_022.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu4daeITw/recuWXu4daeITw_023.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "言语康复师",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_021.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_022.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_023.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_024.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_025.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vfmE/recuWXu6h9vfmE_026.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "特殊儿童康复师",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9nxJE/recuWXu6h9nxJE_021.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "临终关怀师",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_021.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_022.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_023.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_024.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_025.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_026.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_027.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_028.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_029.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_030.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_031.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_032.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_033.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h95dhx/recuWXu6h95dhx_034.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "产后康复师",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9Dgvb/recuWXu6h9Dgvb_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9Dgvb/recuWXu6h9Dgvb_002.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "医美咨询师",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_021.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_022.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_023.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_024.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_025.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_026.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_027.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_028.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_029.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_030.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_031.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_032.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_033.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_034.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_035.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_036.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_037.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_038.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_039.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_040.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_041.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9vziV/recuWXu6h9vziV_042.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "健康理疗师助理",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9CW2O/recuWXu6h9CW2O_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9CW2O/recuWXu6h9CW2O_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9CW2O/recuWXu6h9CW2O_003.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "成人康复治疗师助理",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu6h9KZQl/recuWXu6h9KZQl_001.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "中医推拿师",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu85OchWB/recuWXu85OchWB_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu85OchWB/recuWXu85OchWB_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu85OchWB/recuWXu85OchWB_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu85OchWB/recuWXu85OchWB_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu85OchWB/recuWXu85OchWB_005.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "新媒体运营专员",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8T1seSu/recuWXu8T1seSu_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8T1seSu/recuWXu8T1seSu_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8T1seSu/recuWXu8T1seSu_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8T1seSu/recuWXu8T1seSu_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8T1seSu/recuWXu8T1seSu_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8T1seSu/recuWXu8T1seSu_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8T1seSu/recuWXu8T1seSu_007.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "活动执行",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu8WVvmHm/recuWXu8WVvmHm_019.jpg"
|
||||
},
|
||||
{
|
||||
"内推岗位名称": "客服",
|
||||
"产业": "大健康",
|
||||
"BOSS照片链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_001.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_002.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_003.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_004.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_005.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_006.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_007.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_008.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_009.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_010.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_011.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_012.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_013.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_014.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_015.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_016.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_017.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_018.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_019.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_020.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_021.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_022.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_023.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_024.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_025.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_026.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_027.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_028.jpg,https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/comp/recuWXu93bRHqk/recuWXu93bRHqk_029.jpg"
|
||||
}
|
||||
]
|
||||
@@ -81,7 +81,7 @@
|
||||
"# 个性化营养算法首创",
|
||||
"# 60%企业营收增30%"
|
||||
],
|
||||
"❌导师头像url链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.png"
|
||||
"❌导师头像url链接": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/img/teach_sys_teacher-avatar/recuW7dxJ5t1Ii.jpeg"
|
||||
},
|
||||
{
|
||||
"查询导师名称": "张国强",
|
||||
|
||||
578
frontend_大健康/网页未导入数据/面试评分及评价.json
Normal file
578
frontend_大健康/网页未导入数据/面试评分及评价.json
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user