selfEvaluation.vue 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <!-- -->
  2. <template>
  3. <div>
  4. <v-textarea
  5. v-model="advantage"
  6. :label="$t('resume.dataDefaultPrompt') + $t('resume.personalAdvantages') + '...'"
  7. variant="outlined"
  8. counter="300"
  9. color="primary"
  10. validate-on="input"
  11. :rules="advantageRules"
  12. ></v-textarea>
  13. </div>
  14. </template>
  15. <script setup>
  16. defineOptions({ name: 'resumeAnalysis-selfEvaluation'})
  17. // import Snackbar from '@/plugins/snackbar'
  18. import DOMPurify from 'dompurify'
  19. import { ref } from 'vue'
  20. const props = defineProps({
  21. id: {
  22. type: String,
  23. default: ''
  24. },
  25. data: {
  26. type: String,
  27. default: ''
  28. }
  29. })
  30. const advantage = ref(props.data)
  31. const advantageRules = ref([
  32. value => {
  33. if (value) return true
  34. return '请输入您的个人优势'
  35. },
  36. value => {
  37. if (value?.length <= 300) return true
  38. return '请输入2-300个字符'
  39. }
  40. ])
  41. const submit = async () => {
  42. advantage.value = DOMPurify.sanitize(advantage.value)
  43. if (!advantage.value) {
  44. // Snackbar.warning('请先输入个人优势!')
  45. return { id: props.id, data: null}
  46. }
  47. return { id: props.id, data: { content: advantage.value}}
  48. }
  49. defineExpose({
  50. id: props.id,
  51. submit
  52. })
  53. </script>
  54. <style lang="scss" scoped>
  55. </style>