experience.vue 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <template>
  2. <step-layout
  3. title="填写工作经历"
  4. :showSkip="!isEditMode"
  5. @next="goNext"
  6. @skip="goSkip">
  7. <view class="exp-list">
  8. <!-- Education Section -->
  9. <view class="section">
  10. <view class="section-header">
  11. <text class="section-title">教育经历</text>
  12. <view class="icon-plus" @tap="addEducation"></view>
  13. </view>
  14. <view class="item-list">
  15. <!-- Empty State -->
  16. <view class="empty-state" v-if="educationList.length === 0">
  17. <image src="/static/icons/empty-box.svg" class="empty-icon" mode="aspectFit"></image>
  18. <text class="empty-text">填写真实教育经历,展现您的学术背景</text>
  19. </view>
  20. <view class="item" v-for="(item, index) in educationList" :key="index" @tap="editEducation(index)">
  21. <view class="icon-close" @tap.stop="deleteEducation(index)"></view>
  22. <view class="item-content">
  23. <view class="title-row">
  24. <text class="item-title">{{ item.school }}</text>
  25. </view>
  26. <view class="item-desc">
  27. <text class="desc-text">{{ item.education || item.degree || '' }} {{ (item.education || item.degree) && item.educationType ? '·' : '' }} {{ item.educationType || '' }} {{ ((item.education || item.degree || item.educationType) && item.major) ? '·' : '' }} {{ item.major || '' }}</text>
  28. <text class="item-time" v-if="item.time || item.startTime">{{ item.startTime ? item.startTime + '—' + (item.endTime ? item.endTime : '至今') : item.time }}</text>
  29. </view>
  30. </view>
  31. <view class="arrow"></view>
  32. </view>
  33. </view>
  34. </view>
  35. <!-- Work Section -->
  36. <view class="section">
  37. <view class="section-header">
  38. <text class="section-title">工作经历</text>
  39. <view class="icon-plus" @tap="addWork"></view>
  40. </view>
  41. <view class="item-list">
  42. <view class="empty-state" v-if="workList.length === 0">
  43. <image src="/static/icons/empty-box.svg" class="empty-icon" mode="aspectFit"></image>
  44. <text class="empty-text">填写工作经历,展现您的职业轨迹</text>
  45. </view>
  46. <view class="item" v-for="(item, index) in workList" :key="index" @tap="editWork(index)">
  47. <view class="icon-close" @tap.stop="deleteWork(index)"></view>
  48. <view class="item-content">
  49. <view class="title-row">
  50. <text class="item-title">{{ item.company }}</text>
  51. </view>
  52. <view class="item-desc">
  53. <text class="desc-text">{{ item.positionName || item.position || '工作经历' }}</text>
  54. <text class="item-time" v-if="item.time || item.startTime">{{ item.startTime ? item.startTime + '—' + (item.endTime ? item.endTime : '至今') : item.time }}</text>
  55. </view>
  56. </view>
  57. <view class="arrow"></view>
  58. </view>
  59. </view>
  60. </view>
  61. <!-- Project Section -->
  62. <view class="section border-none">
  63. <view class="section-header">
  64. <text class="section-title">项目经历</text>
  65. <view class="icon-plus" @tap="addProject"></view>
  66. </view>
  67. <view class="item-list">
  68. <view class="empty-state" v-if="projectList.length === 0">
  69. <image src="/static/icons/empty-box.svg" class="empty-icon" mode="aspectFit"></image>
  70. <text class="empty-text">填写真实项目经历,突显您的实战能力</text>
  71. </view>
  72. <view class="item" v-for="(item, index) in projectList" :key="index" @tap="editProject(index)">
  73. <view class="icon-close" @tap.stop="deleteProject(index)"></view>
  74. <view class="item-content">
  75. <view class="title-row">
  76. <text class="item-title">{{ item.name }}</text>
  77. </view>
  78. <view class="item-desc">
  79. <text class="desc-text">{{ item.role || '项目经历' }}</text>
  80. <text class="item-time" v-if="item.time || item.startTime">{{ item.startTime ? item.startTime + '—' + (item.endTime ? item.endTime : '至今') : item.time }}</text>
  81. </view>
  82. <view class="item-detail">{{ item.desc }}</view>
  83. </view>
  84. <view class="arrow"></view>
  85. </view>
  86. </view>
  87. </view>
  88. </view>
  89. <!-- Custom Modal for Delete Confirmation -->
  90. <view class="custom-modal" :class="{ 'is-show': showModal }">
  91. <view class="modal-mask" @tap="closeModal"></view>
  92. <view class="modal-content">
  93. <view class="modal-title">提示</view>
  94. <view class="modal-body">{{ modalContent }}</view>
  95. <view class="modal-footer">
  96. <view class="btn-cancel" @tap="closeModal">取消</view>
  97. <view class="btn-confirm" @tap="confirmDelete">确定</view>
  98. </view>
  99. </view>
  100. </view>
  101. </step-layout>
  102. </template>
  103. <script src="./experience.js"></script>
  104. <style lang="scss" scoped>
  105. @import './experience.scss';
  106. </style>