recruiter-dashboard.html 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>招聘者中心 - 智能招聘系统</title>
  7. <!-- 国内CDN引入 -->
  8. <link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
  9. <link href="https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.min.css" rel="stylesheet">
  10. <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.3/echarts.min.js"></script>
  11. <link href="common.css" rel="stylesheet">
  12. <link href="recruiter.css" rel="stylesheet">
  13. </head>
  14. <body>
  15. <!-- 主界面 - 招聘者 -->
  16. <div class="container" id="recruiterContainer">
  17. <!-- 左侧导航 -->
  18. <div class="sidebar">
  19. <div class="logo">
  20. <i class="fas fa-building"></i>
  21. <span>招聘者中心</span>
  22. </div>
  23. <div class="nav-menu">
  24. <div class="nav-item active" id="navRecruiterCandidates">
  25. <i class="fas fa-users"></i>
  26. <span>候选人</span>
  27. </div>
  28. <div class="nav-item" id="navRecruiterJobs">
  29. <i class="fas fa-briefcase"></i>
  30. <span>职位管理</span>
  31. </div>
  32. <div class="nav-item" id="navRecruiterResume">
  33. <i class="fas fa-file-alt"></i>
  34. <span>简历分析</span>
  35. </div>
  36. <div class="nav-item" id="navRecruiterInterview">
  37. <i class="fas fa-video"></i>
  38. <span>视频面试</span>
  39. </div>
  40. <div class="nav-item" id="navRecruiterRecords">
  41. <i class="fas fa-history"></i>
  42. <span>面试记录</span>
  43. </div>
  44. <div class="nav-item" id="navRecruiterAnalysis">
  45. <i class="fas fa-chart-bar"></i>
  46. <span>数据分析</span>
  47. </div>
  48. <div class="nav-item" id="navRecruiterProfile">
  49. <i class="fas fa-user"></i>
  50. <span>个人中心</span>
  51. </div>
  52. <div class="nav-item" id="navRecruiterSettings">
  53. <i class="fas fa-cog"></i>
  54. <span>系统设置</span>
  55. </div>
  56. </div>
  57. </div>
  58. <!-- 主内容区 -->
  59. <div class="main-content">
  60. <!-- 顶部信息栏 -->
  61. <div class="header">
  62. <div class="search-bar">
  63. <input type="text" class="search-input" placeholder="搜索候选人姓名、技能..." id="recruiterSearchInput">
  64. <button class="search-btn" id="recruiterSearchBtn">
  65. <i class="fas fa-search"></i>
  66. </button>
  67. <span class="search-advanced" id="recruiterAdvancedSearch">高级筛选</span>
  68. </div>
  69. <div class="search-filters" id="recruiterSearchFilters">
  70. <div class="filter-row">
  71. <div class="filter-group">
  72. <label for="candidateLocationFilter">期望地点</label>
  73. <select id="candidateLocationFilter" class="filter-select">
  74. <option value="">全部</option>
  75. <option value="beijing">北京</option>
  76. <option value="shanghai">上海</option>
  77. <option value="guangzhou">广州</option>
  78. <option value="shenzhen">深圳</option>
  79. <option value="remote">远程</option>
  80. </select>
  81. </div>
  82. <div class="filter-group">
  83. <label for="candidateExperienceFilter">工作经验</label>
  84. <select id="candidateExperienceFilter" class="filter-select">
  85. <option value="">全部</option>
  86. <option value="1">1年以下</option>
  87. <option value="1-3">1-3年</option>
  88. <option value="3-5">3-5年</option>
  89. <option value="5+">5年以上</option>
  90. </select>
  91. </div>
  92. </div>
  93. <div class="filter-row">
  94. <div class="filter-group">
  95. <label for="candidateEducationFilter">学历要求</label>
  96. <select id="candidateEducationFilter" class="filter-select">
  97. <option value="">全部</option>
  98. <option value="college">大专</option>
  99. <option value="bachelor">本科</option>
  100. <option value="master">硕士</option>
  101. <option value="phd">博士</option>
  102. </select>
  103. </div>
  104. <div class="filter-group">
  105. <label for="candidateSalaryFilter">期望薪资</label>
  106. <select id="candidateSalaryFilter" class="filter-select">
  107. <option value="">全部</option>
  108. <option value="10k">10k以下</option>
  109. <option value="10-20k">10-20k</option>
  110. <option value="20-30k">20-30k</option>
  111. <option value="30k+">30k以上</option>
  112. </select>
  113. </div>
  114. </div>
  115. <div class="filter-actions">
  116. <button class="btn" id="resetRecruiterFilters">重置</button>
  117. <button class="btn btn-primary" id="applyRecruiterFilters">应用筛选</button>
  118. </div>
  119. </div>
  120. <div class="user-info">
  121. <div class="user-dropdown">
  122. <div class="avatar" id="recruiterAvatar">李</div>
  123. <div class="dropdown-menu" id="recruiterDropdown">
  124. <div class="dropdown-item" id="dropdownRecruiterProfile">
  125. <i class="fas fa-user"></i> 个人中心
  126. </div>
  127. <div class="dropdown-item" id="dropdownRecruiterSettings">
  128. <i class="fas fa-cog"></i> 系统设置
  129. </div>
  130. <div class="dropdown-divider"></div>
  131. <div class="dropdown-item" id="dropdownRecruiterLogout">
  132. <i class="fas fa-sign-out-alt"></i> 退出登录
  133. </div>
  134. </div>
  135. </div>
  136. <div>
  137. <div style="font-weight: 500;">李明</div>
  138. <div style="font-size: 12px; color: #64748b;">XX公司招聘经理</div>
  139. </div>
  140. </div>
  141. </div>
  142. <!-- 候选人页面 -->
  143. <div class="content-area" id="recruiterCandidatesPage">
  144. <div class="content-title">
  145. <i class="fas fa-users"></i>
  146. <span>候选人列表</span>
  147. </div>
  148. <!-- 搜索历史 -->
  149. <div class="search-history">
  150. <div class="history-title">搜索历史</div>
  151. <div class="history-tags" id="recruiterSearchHistoryTags">
  152. <span class="history-tag">前端开发</span>
  153. <span class="history-tag">3-5年经验</span>
  154. <span class="history-tag">本科</span>
  155. <span class="history-tag">北京</span>
  156. </div>
  157. </div>
  158. <div class="card-grid" id="candidateGrid">
  159. <!-- 候选人卡片将通过JS动态生成 -->
  160. </div>
  161. </div>
  162. <!-- 职位管理页面 -->
  163. <div class="content-area" id="recruiterJobsPage" style="display: none;">
  164. <div class="content-title">
  165. <i class="fas fa-briefcase"></i>
  166. <span>职位管理</span>
  167. </div>
  168. <div style="text-align: right; margin-bottom: 20px;">
  169. <button class="btn btn-primary" id="addJobBtn">
  170. <i class="fas fa-plus"></i> 发布新职位
  171. </button>
  172. </div>
  173. <div class="card-grid" id="jobManageGrid">
  174. <!-- 职位管理卡片将通过JS动态生成 -->
  175. </div>
  176. </div>
  177. <!-- 简历分析页面 -->
  178. <div class="content-area" id="recruiterResumePage" style="display: none;">
  179. <div class="content-title">
  180. <i class="fas fa-file-alt"></i>
  181. <span>简历分析</span>
  182. </div>
  183. <div style="display: flex; gap: 20px;">
  184. <div style="flex: 1;">
  185. <div class="card">
  186. <div class="card-header">
  187. <div class="card-avatar">张</div>
  188. <div>
  189. <div class="card-title">张伟</div>
  190. <div class="card-subtitle">前端开发工程师 · 5年经验</div>
  191. </div>
  192. </div>
  193. <div class="card-tags">
  194. <span class="card-tag">JavaScript</span>
  195. <span class="card-tag">Vue.js</span>
  196. <span class="card-tag">React</span>
  197. <span class="card-tag">+5</span>
  198. </div>
  199. <div class="card-footer">
  200. <span class="card-match">匹配度: 88%</span>
  201. <button class="card-btn">邀请面试</button>
  202. </div>
  203. </div>
  204. <div class="form-section" style="margin-top: 20px;">
  205. <div class="form-section-title">
  206. <i class="fas fa-star"></i>
  207. <span>AI分析评价</span>
  208. </div>
  209. <div style="padding: 12px; background: #f8fafc; border-radius: 8px;">
  210. <p>候选人技术栈与职位要求高度匹配,尤其在Vue.js和React方面有丰富经验。具备5年开发经验,主导过多个大型项目,团队协作能力强。教育背景优秀,毕业于北京大学计算机专业。建议重点关注。</p>
  211. </div>
  212. </div>
  213. </div>
  214. <div style="flex: 2;">
  215. <div class="form-section">
  216. <div class="form-section-title">
  217. <i class="fas fa-user"></i>
  218. <span>基本信息</span>
  219. </div>
  220. <div style="display: flex; gap: 20px; margin-bottom: 16px;">
  221. <div>
  222. <div style="font-size: 14px; color: #64748b;">姓名</div>
  223. <div style="font-weight: 500;">张伟</div>
  224. </div>
  225. <div>
  226. <div style="font-size: 14px; color: #64748b;">性别</div>
  227. <div style="font-weight: 500;">男</div>
  228. </div>
  229. <div>
  230. <div style="font-size: 14px; color: #64748b;">年龄</div>
  231. <div style="font-weight: 500;">33</div>
  232. </div>
  233. <div>
  234. <div style="font-size: 14px; color: #64748b;">电话</div>
  235. <div style="font-weight: 500;">138****8000</div>
  236. </div>
  237. <div>
  238. <div style="font-size: 14px; color: #64748b;">邮箱</div>
  239. <div style="font-weight: 500;">zhangwei@example.com</div>
  240. </div>
  241. </div>
  242. </div>
  243. <div class="form-section">
  244. <div class="form-section-title">
  245. <i class="fas fa-graduation-cap"></i>
  246. <span>教育背景</span>
  247. </div>
  248. <div style="margin-bottom: 16px;">
  249. <div style="font-weight: 500; margin-bottom: 4px;">北京大学</div>
  250. <div style="color: #64748b; margin-bottom: 4px;">计算机科学与技术 · 本科 · 2008-2012</div>
  251. </div>
  252. </div>
  253. <div class="form-section">
  254. <div class="form-section-title">
  255. <i class="fas fa-briefcase"></i>
  256. <span>工作经历</span>
  257. </div>
  258. <div style="margin-bottom: 16px;">
  259. <div style="font-weight: 500; margin-bottom: 4px;">AA科技有限公司 · 高级前端开发工程师</div>
  260. <div style="color: #64748b; margin-bottom: 4px;">2018-2023 · 5年</div>
  261. <div style="margin-top: 8px;">
  262. <p>负责公司核心产品的前端架构设计和开发,带领3人前端团队,使用Vue.js和React技术栈。主导了公司官网重构项目,性能提升40%。</p>
  263. </div>
  264. </div>
  265. <div style="margin-bottom: 16px;">
  266. <div style="font-weight: 500; margin-bottom: 4px;">BB互联网公司 · 前端开发工程师</div>
  267. <div style="color: #64748b; margin-bottom: 4px;">2014-2018 · 4年</div>
  268. <div style="margin-top: 8px;">
  269. <p>参与公司多个项目的前端开发工作,主要负责移动端H5页面开发,积累了丰富的移动端适配经验。</p>
  270. </div>
  271. </div>
  272. </div>
  273. <div class="form-section">
  274. <div class="form-section-title">
  275. <i class="fas fa-project-diagram"></i>
  276. <span>项目经验</span>
  277. </div>
  278. <div style="margin-bottom: 16px;">
  279. <div style="font-weight: 500; margin-bottom: 4px;">XX电商平台重构</div>
  280. <div style="color: #64748b; margin-bottom: 4px;">2021-2022 · 项目负责人</div>
  281. <div style="margin-top: 8px;">
  282. <p>主导公司电商平台前端重构,采用Vue3 + TypeScript技术栈,实现组件化开发,页面加载速度提升35%。</p>
  283. </div>
  284. </div>
  285. </div>
  286. <div class="form-section">
  287. <div class="form-section-title">
  288. <i class="fas fa-star"></i>
  289. <span>技能专长</span>
  290. </div>
  291. <div class="card-tags" style="margin-top: 12px;">
  292. <span class="card-tag">JavaScript</span>
  293. <span class="card-tag">HTML5</span>
  294. <span class="card-tag">CSS3</span>
  295. <span class="card-tag">Vue.js</span>
  296. <span class="card-tag">React</span>
  297. <span class="card-tag">Node.js</span>
  298. <span class="card-tag">Webpack</span>
  299. <span class="card-tag">Git</span>
  300. </div>
  301. </div>
  302. </div>
  303. </div>
  304. </div>
  305. <!-- 视频面试页面 -->
  306. <div class="content-area" id="recruiterInterviewPage" style="display: none;">
  307. <div class="content-title">
  308. <i class="fas fa-video"></i>
  309. <span>视频面试</span>
  310. </div>
  311. <div style="display: flex; gap: 20px;">
  312. <div style="flex: 1;">
  313. <div class="card">
  314. <div class="card-header">
  315. <div class="card-avatar">张</div>
  316. <div>
  317. <div class="card-title">张伟</div>
  318. <div class="card-subtitle">前端开发工程师 · 5年经验</div>
  319. </div>
  320. </div>
  321. <div class="card-tags">
  322. <span class="card-tag">JavaScript</span>
  323. <span class="card-tag">Vue.js</span>
  324. <span class="card-tag">React</span>
  325. </div>
  326. <div class="card-footer">
  327. <span>匹配度: 88%</span>
  328. <button class="card-btn">查看简历</button>
  329. </div>
  330. </div>
  331. <div style="margin-top: 20px;">
  332. <h3 style="margin-bottom: 16px;">面试信息</h3>
  333. <div class="form-group">
  334. <label for="interviewDate">面试日期</label>
  335. <input type="date" id="interviewDate" class="form-control" value="2023-11-15">
  336. </div>
  337. <div class="form-group">
  338. <label for="interviewTime">面试时间</label>
  339. <input type="time" id="interviewTime" class="form-control" value="14:00">
  340. </div>
  341. <div class="form-group">
  342. <label for="interviewDuration">持续时间</label>
  343. <select id="interviewDuration" class="form-control">
  344. <option value="30">30分钟</option>
  345. <option value="60" selected>60分钟</option>
  346. <option value="90">90分钟</option>
  347. </select>
  348. </div>
  349. <div class="form-group">
  350. <label for="interviewType">面试类型</label>
  351. <select id="interviewType" class="form-control">
  352. <option value="technical" selected>技术面试</option>
  353. <option value="hr">HR面试</option>
  354. <option value="manager">经理面试</option>
  355. </select>
  356. </div>
  357. <div class="form-group">
  358. <label for="interviewer">面试官</label>
  359. <input type="text" id="interviewer" class="form-control" value="李明">
  360. </div>
  361. </div>
  362. </div>
  363. <div style="flex: 2;">
  364. <div style="background: #f8fafc; border-radius: 8px; padding: 20px; height: 100%;">
  365. <div style="text-align: center; margin-bottom: 20px;">
  366. <h3>视频面试预览</h3>
  367. <p style="color: #64748b;">面试开始后将显示视频画面</p>
  368. </div>
  369. <div style="background: #e2e8f0; height: 300px; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-bottom: 20px;">
  370. <i class="fas fa-video" style="font-size: 60px; color: #94a3b8;"></i>
  371. </div>
  372. <div style="display: flex; justify-content: center; gap: 20px;">
  373. <button class="btn btn-primary" id="startInterviewBtn">
  374. <i class="fas fa-video"></i> 开始面试
  375. </button>
  376. <button class="btn">
  377. <i class="fas fa-comment"></i> 发送消息
  378. </button>
  379. <button class="btn btn-danger">
  380. <i class="fas fa-phone-slash"></i> 结束面试
  381. </button>
  382. </div>
  383. <div style="margin-top: 30px;">
  384. <h3 style="margin-bottom: 16px;">面试评价</h3>
  385. <div class="form-group">
  386. <label for="interviewScore">综合评分</label>
  387. <select id="interviewScore" class="form-control">
  388. <option value="">请选择评分</option>
  389. <option value="5">5分 - 非常优秀</option>
  390. <option value="4">4分 - 良好</option>
  391. <option value="3">3分 - 一般</option>
  392. <option value="2">2分 - 较差</option>
  393. <option value="1">1分 - 不符合</option>
  394. </select>
  395. </div>
  396. <div class="form-group">
  397. <label for="interviewNotes">面试记录</label>
  398. <textarea id="interviewNotes" class="form-control" rows="5" placeholder="记录面试过程中的关键点和评价"></textarea>
  399. </div>
  400. <div class="form-actions">
  401. <button class="btn">取消</button>
  402. <button class="btn btn-primary">保存评价</button>
  403. </div>
  404. </div>
  405. </div>
  406. </div>
  407. </div>
  408. </div>
  409. <!-- 面试记录页面 -->
  410. <div class="content-area" id="recruiterRecordsPage" style="display: none;">
  411. <div class="content-title">
  412. <i class="fas fa-history"></i>
  413. <span>面试记录</span>
  414. </div>
  415. <div style="display: flex; gap: 20px; margin-bottom: 20px;">
  416. <div style="flex: 1;">
  417. <div class="form-group">
  418. <label for="recordCandidate">候选人</label>
  419. <select id="recordCandidate" class="form-control">
  420. <option value="">全部候选人</option>
  421. <option value="1">张伟</option>
  422. <option value="2">李娜</option>
  423. <option value="3">王强</option>
  424. </select>
  425. </div>
  426. </div>
  427. <div style="flex: 1;">
  428. <div class="form-group">
  429. <label for="recordJob">职位</label>
  430. <select id="recordJob" class="form-control">
  431. <option value="">全部职位</option>
  432. <option value="1">前端开发工程师</option>
  433. <option value="2">UI设计师</option>
  434. <option value="3">产品经理</option>
  435. </select>
  436. </div>
  437. </div>
  438. <div style="flex: 1;">
  439. <div class="form-group">
  440. <label for="recordStatus">状态</label>
  441. <select id="recordStatus" class="form-control">
  442. <option value="">全部状态</option>
  443. <option value="passed">通过</option>
  444. <option value="failed">未通过</option>
  445. <option value="pending">待定</option>
  446. </select>
  447. </div>
  448. </div>
  449. <div style="flex: 1; display: flex; align-items: flex-end;">
  450. <button class="btn btn-primary" style="width: 100%;">
  451. <i class="fas fa-filter"></i> 筛选
  452. </button>
  453. </div>
  454. </div>
  455. <div class="card-grid">
  456. <div class="card">
  457. <div class="card-header">
  458. <div class="card-avatar">张</div>
  459. <div>
  460. <div class="card-title">张伟</div>
  461. <div class="card-subtitle">前端开发工程师 · 技术面试</div>
  462. </div>
  463. </div>
  464. <div class="card-tags">
  465. <span class="card-tag">2023-10-20</span>
  466. <span class="card-tag">通过</span>
  467. </div>
  468. <div class="card-footer">
  469. <span>评分: 4.5/5</span>
  470. <button class="card-btn">查看详情</button>
  471. </div>
  472. </div>
  473. <div class="card">
  474. <div class="card-header">
  475. <div class="card-avatar">李</div>
  476. <div>
  477. <div class="card-title">李娜</div>
  478. <div class="card-subtitle">UI设计师 · 技术面试</div>
  479. </div>
  480. </div>
  481. <div class="card-tags">
  482. <span class="card-tag">2023-10-18</span>
  483. <span class="card-tag">待定</span>
  484. </div>
  485. <div class="card-footer">
  486. <span>评分: 3.8/5</span>
  487. <button class="card-btn">查看详情</button>
  488. </div>
  489. </div>
  490. <div class="card">
  491. <div class="card-header">
  492. <div class="card-avatar">王</div>
  493. <div>
  494. <div class="card-title">王强</div>
  495. <div class="card-subtitle">前端开发工程师 · 技术面试</div>
  496. </div>
  497. </div>
  498. <div class="card-tags">
  499. <span class="card-tag">2023-10-15</span>
  500. <span class="card-tag">未通过</span>
  501. </div>
  502. <div class="card-footer">
  503. <span>评分: 2.5/5</span>
  504. <button class="card-btn">查看详情</button>
  505. </div>
  506. </div>
  507. </div>
  508. </div>
  509. <!-- 数据分析页面 -->
  510. <div class="content-area" id="recruiterAnalysisPage" style="display: none;">
  511. <div class="content-title">
  512. <i class="fas fa-chart-bar"></i>
  513. <span>数据分析</span>
  514. </div>
  515. <div style="display: flex; gap: 20px; margin-bottom: 20px;">
  516. <div style="flex: 1; background: #f8fafc; border-radius: 8px; padding: 16px;">
  517. <div style="font-size: 14px; color: #64748b; margin-bottom: 8px;">候选人总数</div>
  518. <div style="font-size: 24px; font-weight: 600;">128</div>
  519. <div style="font-size: 14px; color: #10b981; margin-top: 4px;">
  520. <i class="fas fa-arrow-up"></i> 12% 月增长
  521. </div>
  522. </div>
  523. <div style="flex: 1; background: #f8fafc; border-radius: 8px; padding: 16px;">
  524. <div style="font-size: 14px; color: #64748b; margin-bottom: 8px;">面试通过率</div>
  525. <div style="font-size: 24px; font-weight: 600;">38%</div>
  526. <div style="font-size: 14px; color: #10b981; margin-top: 4px;">
  527. <i class="fas fa-arrow-up"></i> 5% 月增长
  528. </div>
  529. </div>
  530. <div style="flex: 1; background: #f8fafc; border-radius: 8px; padding: 16px;">
  531. <div style="font-size: 14px; color: #64748b; margin-bottom: 8px;">平均招聘周期</div>
  532. <div style="font-size: 24px; font-weight: 600;">23天</div>
  533. <div style="font-size: 14px; color: #ef4444; margin-top: 4px;">
  534. <i class="fas fa-arrow-down"></i> 2天 月减少
  535. </div>
  536. </div>
  537. <div style="flex: 1; background: #f8fafc; border-radius: 8px; padding: 16px;">
  538. <div style="font-size: 14px; color: #64748b; margin-bottom: 8px;">职位空缺</div>
  539. <div style="font-size: 24px; font-weight: 600;">15</div>
  540. <div style="font-size: 14px; color: #ef4444; margin-top: 4px;">
  541. <i class="fas fa-arrow-up"></i> 3个 月增长
  542. </div>
  543. </div>
  544. </div>
  545. <div style="display: flex; gap: 20px; margin-bottom: 20px;">
  546. <div style="flex: 1; background: white; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);">
  547. <div style="font-weight: 500; margin-bottom: 16px;">候选人来源</div>
  548. <div class="chart-container" id="candidateSourceChart"></div>
  549. </div>
  550. <div style="flex: 1; background: white; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);">
  551. <div style="font-weight: 500; margin-bottom: 16px;">职位申请趋势</div>
  552. <div class="chart-container" id="applicationTrendChart"></div>
  553. </div>
  554. </div>
  555. <div style="background: white; border-radius: 8px; padding: 16px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);">
  556. <div style="font-weight: 500; margin-bottom: 16px;">技能分布</div>
  557. <div class="chart-container" id="skillDistributionChart"></div>
  558. </div>
  559. </div>
  560. <!-- 个人中心页面 -->
  561. <div class="content-area" id="recruiterProfilePage" style="display: none;">
  562. <div class="content-title">
  563. <i class="fas fa-user"></i>
  564. <span>个人中心</span>
  565. </div>
  566. <div class="profile-container">
  567. <div class="profile-sidebar">
  568. <div class="profile-menu">
  569. <div class="profile-menu-item active" data-section="recruiterBasicInfo">基本信息</div>
  570. <div class="profile-menu-item" data-section="recruiterCompany">公司信息</div>
  571. <div class="profile-menu-item" data-section="recruiterSecurity">账户安全</div>
  572. </div>
  573. </div>
  574. <div class="profile-content">
  575. <!-- 基本信息 -->
  576. <div class="profile-section active" id="recruiterBasicInfoSection">
  577. <div class="profile-header">
  578. <div class="profile-avatar">李</div>
  579. <div class="profile-info">
  580. <h2>李明</h2>
  581. <p>招聘经理 | XX科技公司</p>
  582. <button class="btn" style="margin-top: 10px;">
  583. <i class="fas fa-camera"></i> 更换头像
  584. </button>
  585. </div>
  586. </div>
  587. <div class="profile-form">
  588. <div class="form-group">
  589. <label for="recruiterName">姓名</label>
  590. <input type="text" id="recruiterName" class="form-control" value="李明">
  591. </div>
  592. <div class="form-row">
  593. <div class="form-col">
  594. <label for="recruiterGender">性别</label>
  595. <select id="recruiterGender" class="form-control">
  596. <option value="male" selected>男</option>
  597. <option value="female">女</option>
  598. <option value="other">其他</option>
  599. </select>
  600. </div>
  601. <div class="form-col">
  602. <label for="recruiterBirth">出生日期</label>
  603. <input type="date" id="recruiterBirth" class="form-control" value="1985-08-20">
  604. </div>
  605. </div>
  606. <div class="form-group">
  607. <label for="recruiterPhone">联系电话</label>
  608. <input type="tel" id="recruiterPhone" class="form-control" value="13900139000">
  609. </div>
  610. <div class="form-group">
  611. <label for="recruiterEmail">电子邮箱</label>
  612. <input type="email" id="recruiterEmail" class="form-control" value="liming@xxtech.com">
  613. </div>
  614. <div class="form-actions">
  615. <button class="btn">取消</button>
  616. <button class="btn btn-primary">保存更改</button>
  617. </div>
  618. </div>
  619. </div>
  620. <!-- 公司信息 -->
  621. <div class="profile-section" id="recruiterCompanySection">
  622. <h2 style="margin-bottom: 20px;">公司信息</h2>
  623. <div class="form-section">
  624. <div class="form-group">
  625. <label for="companyName">公司名称</label>
  626. <input type="text" id="companyName" class="form-control" value="XX科技有限公司">
  627. </div>
  628. <div class="form-group">
  629. <label for="companyIndustry">所属行业</label>
  630. <select id="companyIndustry" class="form-control">
  631. <option value="internet" selected>互联网</option>
  632. <option value="finance">金融</option>
  633. <option value="education">教育</option>
  634. <option value="manufacturing">制造业</option>
  635. </select>
  636. </div>
  637. <div class="form-group">
  638. <label for="companySize">公司规模</label>
  639. <select id="companySize" class="form-control">
  640. <option value="1-50">1-50人</option>
  641. <option value="50-200">50-200人</option>
  642. <option value="200-500" selected>200-500人</option>
  643. <option value="500+">500人以上</option>
  644. </select>
  645. </div>
  646. <div class="form-group">
  647. <label for="companyLocation">公司地址</label>
  648. <input type="text" id="companyLocation" class="form-control" value="北京市海淀区中关村软件园">
  649. </div>
  650. <div class="form-group">
  651. <label for="companyWebsite">公司官网</label>
  652. <input type="url" id="companyWebsite" class="form-control" value="https://www.xxtech.com">
  653. </div>
  654. <div class="form-group">
  655. <label for="companyDescription">公司简介</label>
  656. <textarea id="companyDescription" class="form-control" rows="4">XX科技有限公司成立于2010年,是一家专注于企业级软件开发的互联网公司,拥有多项自主知识产权和专利技术。</textarea>
  657. </div>
  658. <div class="form-actions">
  659. <button class="btn">取消</button>
  660. <button class="btn btn-primary">保存更改</button>
  661. </div>
  662. </div>
  663. </div>
  664. <!-- 账户安全 -->
  665. <div class="profile-section" id="recruiterSecuritySection">
  666. <h2 style="margin-bottom: 20px;">账户安全</h2>
  667. <div class="form-section">
  668. <div class="form-group">
  669. <label for="recruiterCurrentPassword">当前密码</label>
  670. <input type="password" id="recruiterCurrentPassword" class="form-control" placeholder="请输入当前密码">
  671. </div>
  672. <div class="form-group">
  673. <label for="recruiterNewPassword">新密码</label>
  674. <input type="password" id="recruiterNewPassword" class="form-control" placeholder="请输入新密码">
  675. </div>
  676. <div class="form-group">
  677. <label for="recruiterConfirmPassword">确认新密码</label>
  678. <input type="password" id="recruiterConfirmPassword" class="form-control" placeholder="请再次输入新密码">
  679. </div>
  680. <div class="form-actions">
  681. <button class="btn">取消</button>
  682. <button class="btn btn-primary">更改密码</button>
  683. </div>
  684. </div>
  685. </div>
  686. </div>
  687. </div>
  688. </div>
  689. <!-- 系统设置页面 -->
  690. <div class="content-area" id="recruiterSettingsPage" style="display: none;">
  691. <div class="content-title">
  692. <i class="fas fa-cog"></i>
  693. <span>系统设置</span>
  694. </div>
  695. <div class="settings-container">
  696. <div class="settings-sidebar">
  697. <div class="settings-menu">
  698. <div class="settings-menu-item active" data-section="recruiterNotificationSettings">通知设置</div>
  699. <div class="settings-menu-item" data-section="recruiterPrivacySettings">隐私设置</div>
  700. <div class="settings-menu-item" data-section="recruiterAppearanceSettings">外观设置</div>
  701. </div>
  702. </div>
  703. <div class="settings-content">
  704. <!-- 通知设置 -->
  705. <div class="settings-section active" id="recruiterNotificationSettings">
  706. <h2 style="margin-bottom: 20px;">通知设置</h2>
  707. <div class="settings-item">
  708. <div class="settings-item-info">
  709. <h3>新候选人</h3>
  710. <p>当有新的候选人申请职位时通知</p>
  711. </div>
  712. <div class="settings-item-action">
  713. <label class="switch">
  714. <input type="checkbox" checked>
  715. <span class="slider"></span>
  716. </label>
  717. </div>
  718. </div>
  719. <div class="settings-item">
  720. <div class="settings-item-info">
  721. <h3>面试提醒</h3>
  722. <p>在面试开始前提醒</p>
  723. </div>
  724. <div class="settings-item-action">
  725. <label class="switch">
  726. <input type="checkbox" checked>
  727. <span class="slider"></span>
  728. </label>
  729. </div>
  730. </div>
  731. <div class="settings-item">
  732. <div class="settings-item-info">
  733. <h3>系统消息</h3>
  734. <p>接收系统更新和维护通知</p>
  735. </div>
  736. <div class="settings-item-action">
  737. <label class="switch">
  738. <input type="checkbox" checked>
  739. <span class="slider"></span>
  740. </label>
  741. </div>
  742. </div>
  743. <div class="form-group" style="margin-top: 30px;">
  744. <label for="recruiterNotificationEmail">通知邮箱</label>
  745. <input type="email" id="recruiterNotificationEmail" class="form-control" value="liming@xxtech.com">
  746. </div>
  747. <div class="form-actions">
  748. <button class="btn">取消</button>
  749. <button class="btn btn-primary">保存设置</button>
  750. </div>
  751. </div>
  752. <!-- 隐私设置 -->
  753. <div class="settings-section" id="recruiterPrivacySettings">
  754. <h2 style="margin-bottom: 20px;">隐私设置</h2>
  755. <div class="settings-item">
  756. <div class="settings-item-info">
  757. <h3>公开联系方式</h3>
  758. <p>允许候选人查看您的联系方式</p>
  759. </div>
  760. <div class="settings-item-action">
  761. <label class="switch">
  762. <input type="checkbox">
  763. <span class="slider"></span>
  764. </label>
  765. </div>
  766. </div>
  767. <div class="settings-item">
  768. <div class="settings-item-info">
  769. <h3>数据分析共享</h3>
  770. <p>允许系统使用您的招聘数据进行分析</p>
  771. </div>
  772. <div class="settings-item-action">
  773. <label class="switch">
  774. <input type="checkbox" checked>
  775. <span class="slider"></span>
  776. </label>
  777. </div>
  778. </div>
  779. <div class="form-group" style="margin-top: 30px;">
  780. <label for="recruiterPrivacyLevel">隐私级别</label>
  781. <select id="recruiterPrivacyLevel" class="form-control">
  782. <option value="high">高 - 仅对候选人可见</option>
  783. <option value="medium" selected>中 - 对所有认证用户可见</option>
  784. <option value="low">低 - 公开可见</option>
  785. </select>
  786. </div>
  787. <div class="form-actions">
  788. <button class="btn">取消</button>
  789. <button class="btn btn-primary">保存设置</button>
  790. </div>
  791. </div>
  792. <!-- 外观设置 -->
  793. <div class="settings-section" id="recruiterAppearanceSettings">
  794. <h2 style="margin-bottom: 20px;">外观设置</h2>
  795. <div class="form-group">
  796. <label for="recruiterThemeSelect">主题颜色</label>
  797. <select id="recruiterThemeSelect" class="form-control">
  798. <option value="light" selected>浅色主题</option>
  799. <option value="dark">深色主题</option>
  800. <option value="system">跟随系统</option>
  801. </select>
  802. </div>
  803. <div class="form-group">
  804. <label for="recruiterFontSize">字体大小</label>
  805. <select id="recruiterFontSize" class="form-control">
  806. <option value="small">小</option>
  807. <option value="medium" selected>中</option>
  808. <option value="large">大</option>
  809. </select>
  810. </div>
  811. <div class="settings-item">
  812. <div class="settings-item-info">
  813. <h3>动画效果</h3>
  814. <p>启用界面过渡动画</p>
  815. </div>
  816. <div class="settings-item-action">
  817. <label class="switch">
  818. <input type="checkbox" checked>
  819. <span class="slider"></span>
  820. </label>
  821. </div>
  822. </div>
  823. <div class="form-actions">
  824. <button class="btn">取消</button>
  825. <button class="btn btn-primary">保存设置</button>
  826. </div>
  827. </div>
  828. </div>
  829. </div>
  830. </div>
  831. </div>
  832. </div>
  833. <!-- 发布职位模态框 -->
  834. <div class="modal-overlay" id="jobModal">
  835. <div class="modal-content">
  836. <div class="modal-title">
  837. <i class="fas fa-briefcase"></i>
  838. <span>发布新职位</span>
  839. </div>
  840. <div class="form-group">
  841. <label for="jobTitle">职位名称</label>
  842. <input type="text" id="jobTitle" class="form-control" placeholder="例如: 高级产品经理">
  843. </div>
  844. <div class="form-group">
  845. <label for="jobType">职位类型</label>
  846. <select id="jobType" class="form-control">
  847. <option value="fulltime">全职</option>
  848. <option value="parttime">兼职</option>
  849. <option value="intern">实习</option>
  850. </select>
  851. </div>
  852. <div class="form-group">
  853. <label for="jobDepartment">所属部门</label>
  854. <input type="text" id="jobDepartment" class="form-control" placeholder="例如: 产品部">
  855. </div>
  856. <div class="form-group">
  857. <label for="jobLocation">工作地点</label>
  858. <input type="text" id="jobLocation" class="form-control" placeholder="例如: 北京">
  859. </div>
  860. <div class="form-group">
  861. <label for="jobSalary">薪资范围</label>
  862. <input type="text" id="jobSalary" class="form-control" placeholder="例如: 15k-30k">
  863. </div>
  864. <div class="form-group">
  865. <label for="jobDescription">职位描述</label>
  866. <textarea id="jobDescription" class="form-control" rows="5" placeholder="请输入职位描述和工作内容"></textarea>
  867. </div>
  868. <div class="form-group">
  869. <label for="jobRequirements">任职要求</label>
  870. <textarea id="jobRequirements" class="form-control" rows="5" placeholder="请输入任职要求和技能要求"></textarea>
  871. </div>
  872. <div class="modal-buttons">
  873. <button class="modal-btn modal-btn-cancel" id="cancelJob">
  874. 取消
  875. </button>
  876. <button class="modal-btn modal-btn-confirm" id="confirmJob">
  877. 发布职位
  878. </button>
  879. </div>
  880. </div>
  881. </div>
  882. <script src="common.js"></script>
  883. <script src="recruiter.js"></script>
  884. </body>
  885. </html>