selfEvaluation.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <div class="resume-box">
  3. <div class="resume-header">
  4. <div class="resume-title">{{ $t('resume.personalAdvantages') }}</div>
  5. <v-btn v-if="!isEdit" variant="text" color="primary" prepend-icon="mdi-square-edit-outline" @click="isEdit = true">{{ $t('common.edit') }}</v-btn>
  6. </div>
  7. <div v-if="isEdit" class="mt-3">
  8. <v-textarea
  9. v-model="advantage"
  10. label="请输入您的个人优势..."
  11. variant="outlined"
  12. counter="200"
  13. color="primary"
  14. validate-on="input"
  15. :rules="advantageRules"
  16. ></v-textarea>
  17. <div class="text-end">
  18. <v-btn class="half-button mr-3" variant="tonal" @click="isEdit = false">{{ $t('common.cancel') }}</v-btn>
  19. <v-btn color="primary" class="half-button" @click="handleSave">{{ $t('common.save') }}</v-btn>
  20. </div>
  21. </div>
  22. <div v-else class="content-list mt-3">
  23. <div class="advantage" v-html="advantage"></div>
  24. </div>
  25. </div>
  26. </template>
  27. <script setup>
  28. defineOptions({ name: 'selfEvaluation'})
  29. import { ref } from 'vue'
  30. import { saveResumeAdvantage } from '@/api/resume'
  31. import Snackbar from '@/plugins/snackbar'
  32. const isEdit = ref(false)
  33. const advantage = ref('1、熟悉 Java 技术平台,并稳定形成生产力,CCF 中国计算机学会会员,获得微软 MCP、MCSA 认证。 2、熟悉通用缓存/DB /搜索引擎/消息队列等中间件。对业内高可用高并发及分布式技术解决方案有充分理解。3、同时具备常用大数据解决方案实践经验,包括实时计算(Storm/Flink )及离线计算(Hive/ETL/Spark)。 4、对搜索推荐/订单交易等业务方向具备多年实践经验。')
  34. const advantageRules = ref([
  35. value => {
  36. if (value) return true
  37. return '请输入您的个人优势'
  38. },
  39. value => {
  40. if (value?.length <= 200) return true
  41. return '请输入2-200个字符'
  42. }
  43. ])
  44. const handleSave = async () => {
  45. if (!advantage.value) return Snackbar.warning('请先输入个人优势!')
  46. await saveResumeAdvantage({ content: advantage.value })
  47. isEdit.value = false
  48. Snackbar.success('编辑成功')
  49. }
  50. </script>
  51. <style scoped lang="scss">
  52. .content-list {
  53. white-space: pre-line;
  54. }
  55. .advantage {
  56. color: #666;
  57. font-size: 14px;
  58. }
  59. </style>