|
@@ -0,0 +1,153 @@
|
|
|
|
+<div class="resume-container">
|
|
|
|
+ <div class="resume-header">
|
|
|
|
+ <h1>我的简历</h1>
|
|
|
|
+ <div class="action-buttons">
|
|
|
|
+ @if (isEditing) {
|
|
|
|
+ <button class="btn save-btn" (click)="saveResume()">
|
|
|
|
+ <fa-icon [icon]="icons.save"></fa-icon> 保存
|
|
|
|
+ </button>
|
|
|
|
+ <button class="btn cancel-btn" (click)="cancelEditing()">取消</button>
|
|
|
|
+ } @else {
|
|
|
|
+ <button class="btn edit-btn" (click)="startEditing()">
|
|
|
|
+ <fa-icon [icon]="icons.edit"></fa-icon> 编辑
|
|
|
|
+ </button>
|
|
|
|
+ }
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="resume-section">
|
|
|
|
+ <h2>基本信息</h2>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>
|
|
|
|
+ <fa-icon [icon]="icons.user"></fa-icon> 姓名
|
|
|
|
+ </label>
|
|
|
|
+ <input type="text" [(ngModel)]="resume.basicInfo.name" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>
|
|
|
|
+ <fa-icon [icon]="icons.email"></fa-icon> 邮箱
|
|
|
|
+ </label>
|
|
|
|
+ <input type="email" [(ngModel)]="resume.basicInfo.email" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>
|
|
|
|
+ <fa-icon [icon]="icons.phone"></fa-icon> 电话
|
|
|
|
+ </label>
|
|
|
|
+ <input type="tel" [(ngModel)]="resume.basicInfo.phone" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>
|
|
|
|
+ <fa-icon [icon]="icons.briefcase"></fa-icon> 求职意向
|
|
|
|
+ </label>
|
|
|
|
+ <input type="text" [(ngModel)]="resume.basicInfo.position" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="resume-section">
|
|
|
|
+ <h2>
|
|
|
|
+ <fa-icon [icon]="icons.education"></fa-icon> 教育背景
|
|
|
|
+ @if (isEditing) {
|
|
|
|
+ <button class="btn add-btn" (click)="addEducation()">
|
|
|
|
+ <fa-icon [icon]="icons.add"></fa-icon> 添加
|
|
|
|
+ </button>
|
|
|
|
+ }
|
|
|
|
+ </h2>
|
|
|
|
+ @for (edu of resume.education; track edu.id) {
|
|
|
|
+ <div class="education-item">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>学校</label>
|
|
|
|
+ <input type="text" [(ngModel)]="edu.school" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-row">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>学历</label>
|
|
|
|
+ <input type="text" [(ngModel)]="edu.degree" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>专业</label>
|
|
|
|
+ <input type="text" [(ngModel)]="edu.major" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-row">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>开始时间</label>
|
|
|
|
+ <input type="date" [(ngModel)]="edu.startDate" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>结束时间</label>
|
|
|
|
+ <input type="date" [(ngModel)]="edu.endDate" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ @if (isEditing) {
|
|
|
|
+ <button class="btn delete-btn" (click)="removeEducation(edu.id)">
|
|
|
|
+ <fa-icon [icon]="icons.delete"></fa-icon> 删除
|
|
|
|
+ </button>
|
|
|
|
+ }
|
|
|
|
+ </div>
|
|
|
|
+ }
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="resume-section">
|
|
|
|
+ <h2>
|
|
|
|
+ <fa-icon [icon]="icons.experience"></fa-icon> 工作经历
|
|
|
|
+ @if (isEditing) {
|
|
|
|
+ <button class="btn add-btn" (click)="addExperience()">
|
|
|
|
+ <fa-icon [icon]="icons.add"></fa-icon> 添加
|
|
|
|
+ </button>
|
|
|
|
+ }
|
|
|
|
+ </h2>
|
|
|
|
+ @for (exp of resume.experiences; track exp.id) {
|
|
|
|
+ <div class="experience-item">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>公司名称</label>
|
|
|
|
+ <input type="text" [(ngModel)]="exp.company" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>职位</label>
|
|
|
|
+ <input type="text" [(ngModel)]="exp.position" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-row">
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>开始时间</label>
|
|
|
|
+ <input type="date" [(ngModel)]="exp.startDate" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>结束时间</label>
|
|
|
|
+ <input type="date" [(ngModel)]="exp.endDate" [disabled]="!isEditing">
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label>工作描述</label>
|
|
|
|
+ <textarea [(ngModel)]="exp.description" [disabled]="!isEditing"></textarea>
|
|
|
|
+ </div>
|
|
|
|
+ @if (isEditing) {
|
|
|
|
+ <button class="btn delete-btn" (click)="removeExperience(exp.id)">
|
|
|
|
+ <fa-icon [icon]="icons.delete"></fa-icon> 删除
|
|
|
|
+ </button>
|
|
|
|
+ }
|
|
|
|
+ </div>
|
|
|
|
+ }
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="resume-section">
|
|
|
|
+ <h2>技能专长</h2>
|
|
|
|
+ @if (isEditing) {
|
|
|
|
+ <div class="skill-input">
|
|
|
|
+ <input type="text" [(ngModel)]="newSkill" placeholder="输入技能">
|
|
|
|
+ <button class="btn add-btn" (click)="addSkill()">
|
|
|
|
+ <fa-icon [icon]="icons.add"></fa-icon> 添加
|
|
|
|
+ </button>
|
|
|
|
+ </div>
|
|
|
|
+ }
|
|
|
|
+ <div class="skills-list">
|
|
|
|
+ @for (skill of resume.skills; track $index) {
|
|
|
|
+ <div class="skill-tag">
|
|
|
|
+ {{ skill }}
|
|
|
|
+ @if (isEditing) {
|
|
|
|
+ <span class="remove-tag" (click)="removeSkill($index)">×</span>
|
|
|
|
+ }
|
|
|
|
+ </div>
|
|
|
|
+ }
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+</div>
|