entry-ai.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <view class="page-content shared-gradient-bg">
  3. <large-header v-bind="aiTitleBinding" :scroll-top="scrollTop"/>
  4. <pure-card style="margin-top: -30px"/>
  5. <view class="mt-40 mx-20 bg-white mx-card px-30 py-20">
  6. <ai-form ref="form" :model="model" :rules="rules" :render-rules="renderRules"
  7. :render-rule-loading="renderRuleLoading">
  8. <template #prefix>
  9. <uv-text text="专业方向" v-bind="formGroupBinding"/>
  10. <ai-form-item prop="majorCategory" id="majorCategory">
  11. <major-category-picker v-model="model.majorCategory"/>
  12. </ai-form-item>
  13. </template>
  14. <template #suffix>
  15. <uv-form-item>
  16. <uv-text size="12" color="var(--primary-light-color)"
  17. text="*成绩填写的准确性关系到院校录取概率及准确性,请认准填写"/>
  18. </uv-form-item>
  19. </template>
  20. </ai-form>
  21. </view>
  22. <view class="mt-40 px-30 fx-row gap-30">
  23. <uv-button text="我的志愿表" v-bind="plainBtnBinding" @click="handleMyVoluntary"/>
  24. <uv-button text="下一步" v-bind="gradientBtnBinding" @click="handleNext"/>
  25. </view>
  26. <view class="p-40 text-xs text-tips fx-col gap-15">
  27. <view>填报须知</view>
  28. <view>1.本系统提供高考志愿填报智能模拟功能,不等同于实际的网上填报志愿,正式填报请登录省考试院指定填报网站。
  29. </view>
  30. <view>2.各地的高考政策不同,模拟志愿填报会根据当前注册用户所属地自动匹配</view>
  31. <view>
  32. 3.本系统数据均来自省考试院公布的当年招生计划和历年录取数据,推荐结果仅供您模拟参考使用。正式填报时请务必参阅省考试院发布的相关招生计划书籍,如遇到数据错漏请以考试院公布信息为准
  33. </view>
  34. </view>
  35. </view>
  36. </template>
  37. <script>
  38. import {ref, watch} from 'vue';
  39. import LargeHeader from "@/pages/ie/components/large-header.vue";
  40. import PureCard from "@/pages/ie/components/card/pure-card.vue";
  41. import IeFormPicker from "@/pages/ie/components/picker/ie-form-picker.vue";
  42. import MajorCategoryPicker from "@/pages/ie/components/ai-form/items/major-category-picker.vue";
  43. import EyesightPicker from "@/pages/ie/entry-ai/components/eyesight-picker.vue";
  44. import AIFormCommonStyle from "@/pages/ie/components/AIFormCommonStyle";
  45. import AiForm from "@/pages/ie/components/ai-form/ai-form.vue";
  46. import AiFormItem from "@/pages/ie/components/ai-form/ai-form-item.vue";
  47. import MxConst from "@/common/MxConst";
  48. import {useProvidePageScroll} from "@/hooks/usePageScrollInjection";
  49. import {useTransfer} from "@/hooks/useTransfer";
  50. import {useAIRenderRules} from "@/pages/ie/hooks/useAIRenderRules";
  51. import {useProvideMajorTreeService} from "@/pages/ie/hooks/useMajorTreeInjection";
  52. export default {
  53. components: {
  54. AiFormItem,
  55. AiForm,
  56. EyesightPicker,
  57. MajorCategoryPicker,
  58. IeFormPicker,
  59. PureCard,
  60. LargeHeader
  61. },
  62. mixins: [AIFormCommonStyle],
  63. data() {
  64. return {
  65. rules: {
  66. majorCategory: [{required: true, message: '请选择专业种类'}]
  67. }
  68. }
  69. },
  70. setup() {
  71. const scrollTop = useProvidePageScroll()
  72. const {transferTo} = useTransfer()
  73. useProvideMajorTreeService()
  74. const model = ref({majorCategory: ''})
  75. const paramFactory = () => {
  76. const {majorCategory} = model.value
  77. if (!majorCategory) return
  78. const renderType = MxConst.enum.ai.renderType.ai
  79. return {renderType, majorCategory}
  80. }
  81. const {
  82. renderRules,
  83. renderRuleLoading,
  84. reloadRenderRules,
  85. validateRenderRule
  86. } = useAIRenderRules(paramFactory)
  87. watch(() => model.value.majorCategory, () => {
  88. renderRules.value = []
  89. reloadRenderRules()
  90. })
  91. return {
  92. scrollTop,
  93. transferTo,
  94. model,
  95. renderRules,
  96. renderRuleLoading,
  97. validateRenderRule
  98. }
  99. },
  100. methods: {
  101. async handleNext() {
  102. await this.$refs.form.validate()
  103. await this.validateRenderRule()
  104. this.transferTo('/pages/ie/entry-ai-form/entry-ai-form', this.model)
  105. },
  106. handleMyVoluntary() {
  107. this.transferTo('/pages/ie/entry-ai-list/entry-ai-list')
  108. }
  109. }
  110. }
  111. </script>
  112. <style scoped>
  113. ::v-deep .uv-form-item__body__right__message {
  114. text-align: right;
  115. margin-right: 10px;
  116. }
  117. </style>