intention.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <step-layout
  3. title="填写工作意向"
  4. nextText="提交"
  5. :showSkip="!isEditMode"
  6. subtitle="我们会妥善保护你的隐私,后续你也可以在设置中将简历隐藏"
  7. @next="onSubmit"
  8. @skip="onSkip">
  9. <view class="intention-form">
  10. <!-- Job Intentions -->
  11. <view class="form-section">
  12. <view class="section-title">求职意向</view>
  13. <view class="tag-list">
  14. <view
  15. v-for="(item, index) in intentions"
  16. :key="index"
  17. :class="['tag-item', item.selected ? 'active' : '']"
  18. @tap="toggleIntention(index)"
  19. >
  20. {{ item.name }}
  21. </view>
  22. </view>
  23. </view>
  24. <!-- Intern Duration -->
  25. <view class="form-section" v-if="isIntern">
  26. <view class="section-title">实习时长</view>
  27. <view class="input-box" @tap="selectInternDuration">
  28. <text :class="['date-text', !internDuration ? 'is-empty' : '']">{{ internDurationLabel || '请选择' }}</text>
  29. <text class="arrow"></text>
  30. </view>
  31. </view>
  32. <!-- Arrival Time -->
  33. <view class="form-section">
  34. <view class="section-title">到岗时间</view>
  35. <view class="input-box" @tap="selectTime">
  36. <text :class="['date-text', !arrivalTime ? 'is-empty' : '']">{{ arrivalTimeLabel || '1周内' }}</text>
  37. <text class="arrow"></text>
  38. </view>
  39. </view>
  40. <!-- Job Types -->
  41. <view class="form-section">
  42. <view class="section-title">求职类型<text class="sub">(多选)</text></view>
  43. <view class="tag-list cols-3">
  44. <view
  45. v-for="(type, index) in jobTypes"
  46. :key="index"
  47. :class="['tag-item', type.selected ? 'active' : '']"
  48. @tap="toggleType(index)"
  49. >
  50. {{ type.name }}
  51. </view>
  52. </view>
  53. </view>
  54. <!-- Target Companies -->
  55. <view class="form-section list-section">
  56. <view class="item-header">
  57. <text class="section-title">意向公司</text>
  58. <view class="icon-plus" @tap="addCompany"></view>
  59. </view>
  60. <view class="item-list">
  61. <!-- Empty State -->
  62. <view class="empty-state" v-if="targetCompanies.length === 0">
  63. <image src="/static/icons/empty-box.svg" class="empty-icon" mode="aspectFit"></image>
  64. <text class="empty-text">添加意向公司,为您精准推荐匹配岗位</text>
  65. </view>
  66. <!-- Company Items -->
  67. <view class="item" v-for="(comp, index) in targetCompanies" :key="index">
  68. <view class="icon-close" @tap.stop="deleteCompany(index)"></view>
  69. <view class="item-content">
  70. <view class="title-row">
  71. <text class="item-title">{{ comp.name }}</text>
  72. </view>
  73. </view>
  74. </view>
  75. </view>
  76. </view>
  77. </view>
  78. <!-- Custom Modal for Delete Confirmation -->
  79. <view class="custom-modal" :class="{ 'is-show': showModal }">
  80. <view class="modal-mask" @tap="closeModal"></view>
  81. <view class="modal-content">
  82. <view class="modal-title">提示</view>
  83. <view class="modal-body">{{ modalContent }}</view>
  84. <view class="modal-footer">
  85. <view class="btn-cancel" @tap="closeModal">取消</view>
  86. <view class="btn-confirm" @tap="confirmDelete">确定</view>
  87. </view>
  88. </view>
  89. </view>
  90. </step-layout>
  91. </template>
  92. <script src="./intention.js"></script>
  93. <style lang="scss" scoped>
  94. @import './intention.scss';
  95. </style>