page-resume.html 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <div class="resume-container">
  2. <div class="resume-header">
  3. <h1>我的简历</h1>
  4. <div class="action-buttons">
  5. @if (isEditing) {
  6. <button class="btn save-btn" (click)="saveResume()">
  7. <fa-icon [icon]="icons.save"></fa-icon> 保存
  8. </button>
  9. <button class="btn cancel-btn" (click)="cancelEditing()">取消</button>
  10. } @else {
  11. <button class="btn edit-btn" (click)="startEditing()">
  12. <fa-icon [icon]="icons.edit"></fa-icon> 编辑
  13. </button>
  14. }
  15. </div>
  16. </div>
  17. <div class="resume-section">
  18. <h2>基本信息</h2>
  19. <div class="form-group">
  20. <label>
  21. <fa-icon [icon]="icons.user"></fa-icon> 姓名
  22. </label>
  23. <input type="text" [(ngModel)]="resume.basicInfo.name" [disabled]="!isEditing">
  24. </div>
  25. <div class="form-group">
  26. <label>
  27. <fa-icon [icon]="icons.email"></fa-icon> 邮箱
  28. </label>
  29. <input type="email" [(ngModel)]="resume.basicInfo.email" [disabled]="!isEditing">
  30. </div>
  31. <div class="form-group">
  32. <label>
  33. <fa-icon [icon]="icons.phone"></fa-icon> 电话
  34. </label>
  35. <input type="tel" [(ngModel)]="resume.basicInfo.phone" [disabled]="!isEditing">
  36. </div>
  37. <div class="form-group">
  38. <label>
  39. <fa-icon [icon]="icons.briefcase"></fa-icon> 求职意向
  40. </label>
  41. <input type="text" [(ngModel)]="resume.basicInfo.position" [disabled]="!isEditing">
  42. </div>
  43. </div>
  44. <div class="resume-section">
  45. <h2>
  46. <fa-icon [icon]="icons.education"></fa-icon> 教育背景
  47. @if (isEditing) {
  48. <button class="btn add-btn" (click)="addEducation()">
  49. <fa-icon [icon]="icons.add"></fa-icon> 添加
  50. </button>
  51. }
  52. </h2>
  53. @for (edu of resume.education; track edu.id) {
  54. <div class="education-item">
  55. <div class="form-group">
  56. <label>学校</label>
  57. <input type="text" [(ngModel)]="edu.school" [disabled]="!isEditing">
  58. </div>
  59. <div class="form-row">
  60. <div class="form-group">
  61. <label>学历</label>
  62. <input type="text" [(ngModel)]="edu.degree" [disabled]="!isEditing">
  63. </div>
  64. <div class="form-group">
  65. <label>专业</label>
  66. <input type="text" [(ngModel)]="edu.major" [disabled]="!isEditing">
  67. </div>
  68. </div>
  69. <div class="form-row">
  70. <div class="form-group">
  71. <label>开始时间</label>
  72. <input type="date" [(ngModel)]="edu.startDate" [disabled]="!isEditing">
  73. </div>
  74. <div class="form-group">
  75. <label>结束时间</label>
  76. <input type="date" [(ngModel)]="edu.endDate" [disabled]="!isEditing">
  77. </div>
  78. </div>
  79. @if (isEditing) {
  80. <button class="btn delete-btn" (click)="removeEducation(edu.id)">
  81. <fa-icon [icon]="icons.delete"></fa-icon> 删除
  82. </button>
  83. }
  84. </div>
  85. }
  86. </div>
  87. <div class="resume-section">
  88. <h2>
  89. <fa-icon [icon]="icons.experience"></fa-icon> 工作经历
  90. @if (isEditing) {
  91. <button class="btn add-btn" (click)="addExperience()">
  92. <fa-icon [icon]="icons.add"></fa-icon> 添加
  93. </button>
  94. }
  95. </h2>
  96. @for (exp of resume.experiences; track exp.id) {
  97. <div class="experience-item">
  98. <div class="form-group">
  99. <label>公司名称</label>
  100. <input type="text" [(ngModel)]="exp.company" [disabled]="!isEditing">
  101. </div>
  102. <div class="form-group">
  103. <label>职位</label>
  104. <input type="text" [(ngModel)]="exp.position" [disabled]="!isEditing">
  105. </div>
  106. <div class="form-row">
  107. <div class="form-group">
  108. <label>开始时间</label>
  109. <input type="date" [(ngModel)]="exp.startDate" [disabled]="!isEditing">
  110. </div>
  111. <div class="form-group">
  112. <label>结束时间</label>
  113. <input type="date" [(ngModel)]="exp.endDate" [disabled]="!isEditing">
  114. </div>
  115. </div>
  116. <div class="form-group">
  117. <label>工作描述</label>
  118. <textarea [(ngModel)]="exp.description" [disabled]="!isEditing"></textarea>
  119. </div>
  120. @if (isEditing) {
  121. <button class="btn delete-btn" (click)="removeExperience(exp.id)">
  122. <fa-icon [icon]="icons.delete"></fa-icon> 删除
  123. </button>
  124. }
  125. </div>
  126. }
  127. </div>
  128. <div class="resume-section">
  129. <h2>技能专长</h2>
  130. @if (isEditing) {
  131. <div class="skill-input">
  132. <input type="text" [(ngModel)]="newSkill" placeholder="输入技能">
  133. <button class="btn add-btn" (click)="addSkill()">
  134. <fa-icon [icon]="icons.add"></fa-icon> 添加
  135. </button>
  136. </div>
  137. }
  138. <div class="skills-list">
  139. @for (skill of resume.skills; track $index) {
  140. <div class="skill-tag">
  141. {{ skill }}
  142. @if (isEditing) {
  143. <span class="remove-tag" (click)="removeSkill($index)">×</span>
  144. }
  145. </div>
  146. }
  147. </div>
  148. </div>
  149. </div>