93 | {/*
*/}
94 |
95 | {profile?.name &&
{profile.name}
}
96 |
97 | {profile?.mobile && (
98 |
99 |
100 | {profile.mobile}
101 |
102 | )}
103 | {profile?.email && (
104 |
105 |
106 | {profile.email}
107 |
108 | )}
109 | {profile?.github && (
110 |
111 |
112 | {
115 | window.open(profile.github);
116 | }}
117 | >
118 | {profile.github}
119 |
120 |
121 | )}
122 | {profile?.zhihu && (
123 |
124 |
127 | {
130 | window.open(profile.zhihu);
131 | }}
132 | >
133 | {profile.zhihu}
134 |
135 |
136 | )}
137 | {profile?.workExpYear && (
138 |
139 |
140 |
141 | : {profile.workExpYear}
142 |
143 |
144 | )}
145 | {profile?.workPlace && (
146 |
147 |
150 |
151 | : {profile.workPlace}
152 |
153 |
154 | )}
155 | {profile?.positionTitle && (
156 |
157 |
158 |
159 | : {profile.positionTitle}
160 |
161 |
162 | )}
163 |
164 |
165 | {/* */}
166 | {/* 教育背景 */}
167 | {educationList?.length ? (
168 |
170 | title={titleNameMap.educationList}
171 | className="section section-education"
172 | color={theme.color}
173 | >
174 | {educationList.map((education, idx) => {
175 | const [start, end] = education.edu_time;
176 | return (
177 |
178 |
179 |
180 | {education.school}
181 |
182 | {education.major && {education.major}}
183 | {education.academic_degree && (
184 |
188 | ({education.academic_degree})
189 |
190 | )}
191 |
192 |
193 |
194 | {start}
195 | {end ? ` ~ ${end}` : }
196 |
197 |
198 |
199 | );
200 | })}
201 |
202 | ) : null}
203 | {workList?.length ? (
204 |
206 | title={titleNameMap.workList}
207 | className="section section-work"
208 | color={theme.color}
209 | >
210 | {workList.map((work, idx) => {
211 | return (
212 |
213 |
222 | {work.work_desc &&
{work.work_desc}
}
223 |
224 | );
225 | })}
226 |
227 | ) : null}
228 |
}
230 | className="section section-aboutme"
231 | color={theme.color}
232 | >
233 | {aboutme.map((d, idx) => (
234 |
{d}
235 | ))}
236 |
237 | {/* 专业技能 */}
238 | {skillList?.length ? (
239 |
241 | title={titleNameMap.skillList}
242 | className="section section-skill"
243 | color={theme.color}
244 | >
245 | {skillList.map((skill, idx) => {
246 | const skills = _.split(skill.skill_desc, '\n').join(';');
247 | return skills ? (
248 |
249 |
250 |
253 | {skills}
254 |
255 | {skill.skill_level && (
256 |
262 | )}
263 |
264 | ) : null;
265 | })}
266 |
267 | ) : null}
268 | {awardList?.length ? (
269 |
271 | title={titleNameMap.awardList}
272 | className="section section-award"
273 | color={theme.color}
274 | >
275 | {awardList.map((award, idx) => {
276 | return (
277 |
278 |
281 | {award.award_info}
282 | {award.award_time && (
283 |
284 | ({award.award_time})
285 |
286 | )}
287 |
288 | );
289 | })}
290 |
291 | ) : null}
292 |
294 | {workExpList?.length
295 | ? wrapper({
296 | id: 'work-experience',
297 | title: titleNameMap?.workExpList,
298 | color: theme.color,
299 | })(
300 |
301 | {_.map(workExpList, (work, idx) => {
302 | const [start = null, end = null] =
303 | typeof work.work_time === 'string'
304 | ? `${work.work_time || ''}`.split(',')
305 | : work.work_time;
306 | return work ? (
307 |
308 |
309 |
310 | {work.company_name}
311 |
312 | {work.department_name}
313 |
314 |
315 |
316 | {start}
317 | {end ? ` ~ ${end}` : }
318 |
319 |
320 |
{work.work_desc}
321 |
322 | ) : null;
323 | })}
324 |
325 | )
326 | : null}
327 |
328 | {projectList?.length
329 | ? wrapper({
330 | id: 'skill',
331 | title: titleNameMap?.projectList,
332 | color: theme.color,
333 | })(
334 |
335 | {_.map(projectList, (project, idx) =>
336 | project ? (
337 |
338 |
339 |
340 | {project.project_name}
341 |
342 | {project.project_time}
343 |
344 |
345 | {project.project_role && (
346 |
347 | {project.project_role}
348 |
349 | )}
350 |
351 |
352 |
353 | :
354 |
355 | {project.project_desc}
356 |
357 |
358 |
359 | :
360 |
361 |
362 | {project.project_content}
363 |
364 |
365 |
366 | ) : null
367 | )}
368 |
369 | )
370 | : null}
371 |