ai-form-college-major.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <template>
  2. <view class="flex-1 fx-col">
  3. <ie-form-picker :model-value="major.name" :desc="major.majorDirection" label="选择专业"
  4. @click="handleShowPicker"/>
  5. <major-picker ref="picker" :limit="1" :university-code="universityCode" @confirm="handleConfirm"/>
  6. </view>
  7. </template>
  8. <script>
  9. import IeFormPicker from "@/pages/ie/components/picker/ie-form-picker.vue";
  10. import MajorPicker from "@/pages/ie/components/picker/major-picker.vue";
  11. import AIFormFieldBase from "@/pages/ie/components/ai-form/items/AIFormFieldBase";
  12. import {toast} from "@/uni_modules/uv-ui-tools/libs/function";
  13. export default {
  14. name: "ai-form-college-major",
  15. components: {MajorPicker, IeFormPicker},
  16. mixins: [AIFormFieldBase],
  17. emits: ['update:enrollCode'],
  18. props: {
  19. universityCode: {
  20. type: String,
  21. default: ''
  22. },
  23. enrollCode: {
  24. type: String,
  25. default: ''
  26. }
  27. },
  28. data() {
  29. return {
  30. show: false,
  31. major: {}
  32. }
  33. },
  34. watch: {
  35. universityCode() {
  36. // university changes, clear major selected
  37. this.major = {}
  38. this.$emit('update:modelValue', '')
  39. this.$emit('update:enrollCode', '')
  40. }
  41. },
  42. methods: {
  43. async handleShowPicker() {
  44. if (!this.universityCode) {
  45. toast('请先选择学校')
  46. return
  47. }
  48. this.$refs.picker.open()
  49. },
  50. handleConfirm(e) {
  51. this.major = e
  52. this.show = false
  53. this.$emit('update:modelValue', e.code)
  54. this.$emit('update:enrollCode', e.enrollCode)
  55. this.clearValidate()
  56. }
  57. }
  58. }
  59. </script>
  60. <style scoped>
  61. </style>