1
0

2 Incheckningar eb208d990f ... be193847e6

Upphovsman SHA1 Meddelande Datum
  shmily1213 be193847e6 同步基础分支的修改 1 vecka sedan
  shmily1213 01f966ba01 个人信息页显示专业类别 1 vecka sedan

+ 84 - 0
components.d.ts

@@ -0,0 +1,84 @@
+/* eslint-disable */
+// @ts-nocheck
+// Generated by unplugin-vue-components
+// Read more: https://github.com/vuejs/core/pull/3399
+// biome-ignore lint: disable
+export {}
+
+/* prettier-ignore */
+declare module 'vue' {
+  export interface GlobalComponents {
+    IeAutoResizerIeAutoResizer: typeof import('./src/components/ie-auto-resizer/ie-auto-resizer.vue')['default']
+    IeButtonIeButton: typeof import('./src/components/ie-button/ie-button.vue')['default']
+    IeCardIeCard: typeof import('./src/components/ie-card/ie-card.vue')['default']
+    IeDictIeDict: typeof import('./src/components/ie-dict/ie-dict.vue')['default']
+    IeEmptyIeEmpty: typeof import('./src/components/ie-empty/ie-empty.vue')['default']
+    IeGapIeGap: typeof import('./src/components/ie-gap/ie-gap.vue')['default']
+    IeImageIeImage: typeof import('./src/components/ie-image/ie-image.vue')['default']
+    IeInputIeInput: typeof import('./src/components/ie-input/ie-input.vue')['default']
+    IeNavbarIeNavbar: typeof import('./src/components/ie-navbar/ie-navbar.vue')['default']
+    IeNewsItemIeNewsItem: typeof import('./src/components/ie-news-item/ie-news-item.vue')['default']
+    IePageComponentsVipPopup: typeof import('./src/components/ie-page/components/vip-popup.vue')['default']
+    IePageIePage: typeof import('./src/components/ie-page/ie-page.vue')['default']
+    IePickerIePicker: typeof import('./src/components/ie-picker/ie-picker.vue')['default']
+    IePopupIePopup: typeof import('./src/components/ie-popup/ie-popup.vue')['default']
+    IePopupToolbarIePopupToolbar: typeof import('./src/components/ie-popup-toolbar/ie-popup-toolbar.vue')['default']
+    IeSafeAreaBottomIeSafeAreaBottom: typeof import('./src/components/ie-safe-area-bottom/ie-safe-area-bottom.vue')['default']
+    IeSafeToolbarIeSafeToolbar: typeof import('./src/components/ie-safe-toolbar/ie-safe-toolbar.vue')['default']
+    IeSearchIeSearch: typeof import('./src/components/ie-search/ie-search.vue')['default']
+    IeSmsIeCaptcha: typeof import('./src/components/ie-sms/ie-captcha.vue')['default']
+    IeSmsIeSms: typeof import('./src/components/ie-sms/ie-sms.vue')['default']
+    IeTabbarIeTabbar: typeof import('./src/components/ie-tabbar/ie-tabbar.vue')['default']
+    IeTabIeTab: typeof import('./src/components/ie-tab/ie-tab.vue')['default']
+    IeTableIeTable: typeof import('./src/components/ie-table/ie-table.vue')['default']
+    IeTabsSwiperIeTabsSwiper: typeof import('./src/components/ie-tabs-swiper/ie-tabs-swiper.vue')['default']
+    MDragMDrag: typeof import('./src/components/m-drag/m-drag.vue')['default']
+    MDragMDragVue2: typeof import('./src/components/m-drag/m-drag-vue2.vue')['default']
+    MxBottomButtonsMxBottomButtons: typeof import('./src/components/mx-bottom-buttons/mx-bottom-buttons.vue')['default']
+    MxBuyVipMxBuyVip: typeof import('./src/components/mx-buy-vip/mx-buy-vip.vue')['default']
+    MxConditionDropdownMxConditionDropdown: typeof import('./src/components/mx-condition-dropdown/mx-condition-dropdown.vue')['default']
+    MxConditionDropdownMxConditionDropdownItem: typeof import('./src/components/mx-condition-dropdown/mx-condition-dropdown-item.vue')['default']
+    MxConditionDropdownMxConditionDropdownPopup: typeof import('./src/components/mx-condition-dropdown/mx-condition-dropdown-popup.vue')['default']
+    MxConditionMxCondition: typeof import('./src/components/mx-condition/mx-condition.vue')['default']
+    MxConditionMxConditionDropdown: typeof import('./src/components/mx-condition/mx-condition-dropdown.vue')['default']
+    MxCountDownMxCountDown: typeof import('./src/components/mx-count-down/mx-count-down.vue')['default']
+    MxEchartsMxEcharts: typeof import('./src/components/mx-echarts/mx-echarts.vue')['default']
+    MxFormItemMxFormItem: typeof import('./src/components/mx-form-item/mx-form-item.vue')['default']
+    MxIndexMenusMxIndexMenus: typeof import('./src/components/mx-index-menus/mx-index-menus.vue')['default']
+    MxIndexMenusMxIndexMenusItem: typeof import('./src/components/mx-index-menus/mx-index-menus-item.vue')['default']
+    MxIndexMenusMxIndexPagedMenus: typeof import('./src/components/mx-index-menus/mx-index-paged-menus.vue')['default']
+    MxLoginFormItemMxLoginFormItem: typeof import('./src/components/mx-login-form-item/mx-login-form-item.vue')['default']
+    MxNavBarMxNavBar: typeof import('./src/components/mx-nav-bar/mx-nav-bar.vue')['default']
+    MxPaperComponentsMxPaperCompletion: typeof import('./src/components/mx-paper/components/mx-paper-completion.vue')['default']
+    MxPaperComponentsMxPaperNavigatorPopup: typeof import('./src/components/mx-paper/components/mx-paper-navigator-popup.vue')['default']
+    MxPaperComponentsMxPaperProgress: typeof import('./src/components/mx-paper/components/mx-paper-progress.vue')['default']
+    MxPaperComponentsMxPaperTabItem: typeof import('./src/components/mx-paper/components/mx-paper-tab-item.vue')['default']
+    MxPaperMxPaper: typeof import('./src/components/mx-paper/mx-paper.vue')['default']
+    MxPickerMxPicker: typeof import('./src/components/mx-picker/mx-picker.vue')['default']
+    MxPopupTemplateMxPopupTemplate: typeof import('./src/components/mx-popup-template/mx-popup-template.vue')['default']
+    MxProgressMxProgress: typeof import('./src/components/mx-progress/mx-progress.vue')['default']
+    MxQuestionComponentsMxQuestionCollect: typeof import('./src/components/mx-question/components/mx-question-collect.vue')['default']
+    MxQuestionComponentsMxQuestionCorrect: typeof import('./src/components/mx-question/components/mx-question-correct.vue')['default']
+    MxQuestionComponentsMxQuestionCorrectPopup: typeof import('./src/components/mx-question/components/mx-question-correct-popup.vue')['default']
+    MxQuestionComponentsMxQuestionNavigator: typeof import('./src/components/mx-question/components/mx-question-navigator.vue')['default']
+    MxQuestionComponentsMxQuestionParse: typeof import('./src/components/mx-question/components/mx-question-parse.vue')['default']
+    MxQuestionComponentsMxQuestionScoreSubjective: typeof import('./src/components/mx-question/components/mx-question-score-subjective.vue')['default']
+    MxQuestionComponentsMxQuestionStatistic: typeof import('./src/components/mx-question/components/mx-question-statistic.vue')['default']
+    MxQuestionContentComponentsMxQuestionPlainOption: typeof import('./src/components/mx-question-content/components/mx-question-plain-option.vue')['default']
+    MxQuestionContentComponentsMxQuestionPlainOptionGroup: typeof import('./src/components/mx-question-content/components/mx-question-plain-option-group.vue')['default']
+    MxQuestionContentComponentsMxQuestionSubjective: typeof import('./src/components/mx-question-content/components/mx-question-subjective.vue')['default']
+    MxQuestionContentMxQuestionContent: typeof import('./src/components/mx-question-content/mx-question-content.vue')['default']
+    MxQuestionMxQuestion: typeof import('./src/components/mx-question/mx-question.vue')['default']
+    MxSearchMxSearch: typeof import('./src/components/mx-search/mx-search.vue')['default']
+    MxStepsMxSteps: typeof import('./src/components/mx-steps/mx-steps.vue')['default']
+    MxSubmitLayoutMxSubmitLayout: typeof import('./src/components/mx-submit-layout/mx-submit-layout.vue')['default']
+    MxSubsectionMxSubsection: typeof import('./src/components/mx-subsection/mx-subsection.vue')['default']
+    MxTabsSwiperMxTabsSwiper: typeof import('./src/components/mx-tabs-swiper/mx-tabs-swiper.vue')['default']
+    MxTagButtonMxTagButton: typeof import('./src/components/mx-tag-button/mx-tag-button.vue')['default']
+    MxVideoMxVideo: typeof import('./src/components/mx-video/mx-video.vue')['default']
+    RouterLink: typeof import('vue-router')['RouterLink']
+    RouterView: typeof import('vue-router')['RouterView']
+    VipGuideMoreVipGuideMore: typeof import('./src/components/vip-guide-more/vip-guide-more.vue')['default']
+    VueSvgIconsVueSvgIcons: typeof import('./src/components/vue-svg-icons/vue-svg-icons.vue')['default']
+  }
+}

+ 0 - 22
src/components.d.ts

@@ -1,22 +0,0 @@
-/* eslint-disable */
-// @ts-nocheck
-// Generated by unplugin-vue-components
-// Read more: https://github.com/vuejs/core/pull/3399
-// biome-ignore lint: disable
-export {}
-
-/* prettier-ignore */
-declare module 'vue' {
-  export interface GlobalComponents {
-    RouterLink: typeof import('vue-router')['RouterLink']
-    RouterView: typeof import('vue-router')['RouterView']
-    // custom components
-    'dw-page': typeof import('./components/dw-page/dw-page.vue')['default']
-    'dw-navbar': typeof import('./components/dw-navbar/dw-navbar.vue')['default']
-    'dw-oss-image': typeof import('./components/dw-oss-image/dw-oss-image.vue')['default']
-    'dw-image': typeof import('./components/dw-image/dw-image.vue')['default']
-    'dw-picker': typeof import('./components/dw-picker/dw-picker.vue')['default']
-    'dw-input': typeof import('./components/dw-input/dw-input.vue')['default']
-    'dw-button': typeof import('./components/dw-button/dw-button.vue')['default']
-  }
-}

+ 5 - 5
src/components/ie-picker/ie-picker.vue

@@ -1,13 +1,13 @@
 <template>
   <view class="w-full" @click="handleClick">
     <view class="flex items-center gap-x-6 justify-start" :style="customStyle">
-      <view v-if="matchValue || customLabel" class="text-fore-title flex-1 min-w-1 ellipsis-1" :style="getValueStyle"
+      <view v-if="matchValue || customLabel" class="text-[15px] h-[24px] leading-[26px] text-fore-title flex-1 min-w-1 ellipsis-1" :style="getValueStyle"
         :class="{ 'text-[#dce4f6]': disabled || readonly }">
         <slot :label="label">
           {{ label }}
         </slot>
       </view>
-      <view v-else class=" text-[#c0c4cc] flex-1 min-w-1 ellipsis-1" :style="getPlaceholderStyle">{{ placeholder }}</view>
+      <view v-else class="text-[15px] h-[24px] leading-[26px] text-[#c0c4cc] flex-1 min-w-1 ellipsis-1" :style="getPlaceholderStyle">{{ placeholder }}</view>
       <slot name="right">
         <view v-if="!readonly && showArrow" class="transition-all duration-300">
           <uv-icon :name="icon" size="15" color="#B3B3B3" />
@@ -96,7 +96,7 @@ const props = defineProps({
   },
   fontSize: {
     type: Number,
-    default: 30,
+    default: 15,
   },
   showArrow: {
     type: Boolean,
@@ -113,12 +113,12 @@ const columns = computed(() => {
 const getPlaceholderStyle = computed(() => {
   return {
     ...props.placeholderStyle,
-    fontSize: props.fontSize + 'rpx'
+    fontSize: props.fontSize + 'px'
   }
 });
 const getValueStyle = computed(() => {
   return {
-    fontSize: props.fontSize + 'rpx'
+    fontSize: props.fontSize + 'px'
   }
 });
 const init = () => {

+ 13 - 6
src/composables/useExamType.ts

@@ -1,4 +1,4 @@
-import { EnumDictName } from "@/common/enum";
+import { EnumDictName, EnumExamType } from "@/common/enum";
 import { useDictStore } from "@/store/dictStore";
 import { useAppStore } from "@/store/appStore";
 import { DictItem, System } from "@/types";
@@ -26,13 +26,14 @@ export const useExamType = () => {
     }
 
   }
-  const loadExamMajorData = async () => {
-    if (form.value.location && form.value.examType) {
-      const { data } = await getExamMajors(form.value.location, form.value.examType);
+  const loadExamMajorData = async (location: string, examType: EnumExamType) => {
+    if (location && examType) {
+      const { data } = await getExamMajors(location, examType);
       examMajorList.value = data;
     } else {
       examMajorList.value = [];
     }
+    return examMajorList.value;
   }
   const loadGraduateYearData = async () => {
     if (form.value.location && form.value.examType) {
@@ -55,13 +56,18 @@ export const useExamType = () => {
     if (val) {
       loadExamTypeData();
     }
+    if (val && form.value.examType) {
+      loadExamMajorData(val, form.value.examType);
+    }
     loadGraduateYearData();
   });
   watch(() => form.value.examType, (val) => {
     if (val) {
-      loadExamMajorData();
       loadGraduateYearData();
     }
+    if (val && form.value.location) {
+      loadExamMajorData(form.value.location, val);
+    }
   })
   loadProvinceData();
 
@@ -70,6 +76,7 @@ export const useExamType = () => {
     provinceList,
     examTypeList,
     examMajorList,
-    endYearList
+    endYearList,
+    loadExamMajorData
   }
 }

+ 27 - 39
src/pagesMain/pages/index/components/index-popup.vue

@@ -1,45 +1,33 @@
 <template>
-  <!-- #ifdef H5 -->
-  <teleport to="body">
-    <!-- #endif -->
-    <!-- #ifdef MP-WEIXIN -->
-    <root-portal externalClass="theme-ie">
-      <!-- #endif -->
-      <uv-popup ref="popupRef" mode="bottom" :round="16" :closeOnClickOverlay="false">
-        <view class="popup-content relative">
-          <ie-image :is-oss="true" src="/study-bg15.png" custom-class="absolute top-0 left-0 w-full h-392 z-0"
-            mode="aspectFill" />
-          <view class="relative z-1">
-            <view class="px-88 pt-60 pb-60">
-              <view class="text-40 text-fore-title font-bold">请确认信息</view>
-              <view class="mt-16 text-32 text-fore-light">让我们开始体验升学备考之旅吧!</view>
-            </view>
-            <view class="mx-46 pb-50">
-              <view class="flex items-center px-42 bg-back rounded-15 h-104 box-border">
-                <view class="flex-shrink-0 text-30">所在省份</view>
-                <ie-picker ref="pickerRef" v-model="form.location" :list="provinceList" :customStyle="customStyle"
-                  placeholder="请选择" key-label="areaName" key-value="shortName">
-                </ie-picker>
-              </view>
-              <view class="mt-30 flex items-center px-42 bg-back rounded-15 h-104 box-border">
-                <view class="flex-shrink-0 text-30">考生类别</view>
-                <ie-picker ref="pickerRef" v-model="form.examType" :list="examTypeList" :disabled="!form.location"
-                  :customStyle="customStyle" placeholder="请选择" key-label="dictLabel" key-value="dictValue">
-                </ie-picker>
-              </view>
-              <view class="mt-140">
-                <ie-button type="primary" @click="handleConfirm">立即体验</ie-button>
-              </view>
-            </view>
+  <ie-popup title="" mode="bottom" ref="popupRef" :showToolbar="false">
+    <view class="popup-content relative">
+      <ie-image :is-oss="true" src="/study-bg15.png" custom-class="absolute top-0 left-0 w-full h-392 z-0"
+        mode="aspectFill" />
+      <view class="relative z-1">
+        <view class="px-88 pt-60 pb-60">
+          <view class="text-40 text-fore-title font-bold">请确认信息</view>
+          <view class="mt-16 text-32 text-fore-light">让我们开始体验升学备考之旅吧!</view>
+        </view>
+        <view class="mx-46 pb-50">
+          <view class="flex items-center px-42 bg-back rounded-15 h-104 box-border">
+            <view class="flex-shrink-0">所在省份</view>
+            <ie-picker ref="pickerRef" v-model="form.location" :list="provinceList" :customStyle="customStyle"
+              placeholder="请选择" key-label="areaName" key-value="shortName">
+            </ie-picker>
+          </view>
+          <view class="mt-30 flex items-center px-42 bg-back rounded-15 h-104 box-border">
+            <view class="flex-shrink-0">考生类别</view>
+            <ie-picker ref="pickerRef" v-model="form.examType" :list="examTypeList" :disabled="!form.location"
+              :customStyle="customStyle" placeholder="请选择" key-label="dictLabel" key-value="dictValue">
+            </ie-picker>
+          </view>
+          <view class="mt-140">
+            <ie-button type="primary" @click="handleConfirm">立即体验</ie-button>
           </view>
         </view>
-      </uv-popup>
-      <!-- #ifdef MP-WEIXIN -->
-    </root-portal>
-    <!-- #endif -->
-    <!-- #ifdef H5 -->
-  </teleport>
-  <!-- #endif -->
+      </view>
+    </view>
+  </ie-popup>
 </template>
 <script lang="ts" setup>
 import { useExamType } from '@/composables/useExamType';

+ 9 - 4
src/pagesMain/pages/index/index.vue

@@ -6,10 +6,15 @@
           <view class="text-36 text-fore-title font-bold">{{ orgName }}</view>
           <view class="w-6 h-6 rounded-2 bg-black mx-12"></view>
           <view>升学备考好帮手</view>
-          <view v-if="userStore.getLocation" class="ml-10 flex items-center gap-x-4" @click="handleChangeLocation">
-            <ie-image src="/static/image/icon-location.png" custom-class="w-20 h-24" mode="aspectFill" />
-            <text class="text-26 text-primary">{{ userStore.getLocation }}</text>
-          </view>
+        </view>
+      </template>
+      <template #headerRight="{ isTransparent }">
+        <view v-if="userStore.getLocation" class="ml-10 flex items-center gap-x-4" @click="handleChangeLocation">
+          <uv-icon name="map" size="14" :color="isTransparent ? '#333' : 'var(--primary-color)'" />
+          <text class="text-26 transition-colors duration-300"
+            :class="[isTransparent ? 'text-fore-title' : 'text-primary']">
+            {{ userStore.getLocation }}
+          </text>
         </view>
       </template>
     </ie-navbar>

+ 1 - 1
src/pagesSystem/pages/bind-profile/bind-profile.vue

@@ -4,7 +4,7 @@
     <uv-form labelPosition="left" :model="form" labelWidth="70px" ref="formRef">
       <content-card title="个人信息">
         <uv-form-item label="姓名" prop="name" borderBottom required>
-          <uv-input v-model="form.nickName" border="none" placeholder="请输入姓名" placeholderClass="text-30"
+          <uv-input v-model="form.nickName" border="none" placeholder="请输入姓名" placeholderClass="text-[15px]"
             font-size="30rpx" :custom-style="customStyle">
           </uv-input>
         </uv-form-item>

+ 54 - 25
src/pagesSystem/pages/edit-profile/edit-profile.vue

@@ -6,29 +6,35 @@
         <content-card title="个人信息">
           <uv-form-item label="姓名" prop="name" borderBottom>
             <uv-input v-model="form.nickName" border="none" :readonly="!userStore.isStudent" placeholder="请输入姓名"
-              placeholderClass="text-30" font-size="30rpx" :custom-style="customStyle">
+              placeholderClass="text-[15px]" font-size="15px" :custom-style="customStyle">
             </uv-input>
           </uv-form-item>
           <uv-form-item v-if="userStore.isStudent" label="手机号码" prop="name" borderBottom>
             <uv-input v-model="form.phonenumber" border="none" placeholder="请输入手机号码" maxlength="11" type="number"
-              placeholderClass="text-30" font-size="30rpx" :custom-style="customStyle" readonly>
+              placeholderClass="text-[15px]" font-size="15px" :custom-style="customStyle" readonly>
             </uv-input>
-            <text slot="right" class="text-30 text-primary" @click="handleBindPhone">换绑</text>
+            <text slot="right" class="text-[15px] text-primary" @click="handleBindPhone">换绑</text>
           </uv-form-item>
           <uv-form-item label="所在省份" prop="name" borderBottom>
-            <uv-input v-model="form.location" border="none" placeholder="" placeholderClass="text-30" font-size="30rpx"
+            <uv-input v-model="form.location" border="none" placeholder="" placeholderClass="text-[15px]" font-size="15px"
               :custom-style="customStyle" readonly>
             </uv-input>
             <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30" mode="aspectFill" />
           </uv-form-item>
           <uv-form-item label="考试类别" prop="name" borderBottom>
-            <view class="flex-1 pl-[26px] text-30">
+            <view class="flex-1 pl-[26px] text-[15px] leading-[24px]">
               <ie-dict :dictName="EnumDictName.EXAM_TYPE" :dictValue="form.examType" />
             </view>
             <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30" mode="aspectFill" />
           </uv-form-item>
+          <uv-form-item v-if="form.examType === 'VHS'" label="专业类别" prop="examMajor" borderBottom>
+            <view class="flex-1 pl-[26px] text-[15px] h-[24px] leading-[24px]">
+              <text>{{ examMajorName }}</text>
+            </view>
+            <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30" mode="aspectFill" />
+          </uv-form-item>
           <uv-form-item label="单招年份" prop="name">
-            <uv-input v-model="form.endYear" border="none" placeholder="" placeholderClass="text-30" font-size="30rpx"
+            <uv-input v-model="form.endYear" border="none" placeholder="" placeholderClass="text-[15px]" font-size="15px"
               :custom-style="customStyle" readonly>
             </uv-input>
             <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30" mode="aspectFill" />
@@ -38,16 +44,16 @@
         <content-card title="文化素质">
           <uv-form-item label="语文" prop="name" borderBottom>
             <uv-input v-model="scores.chinese" border="none"
-              :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-30"
-              font-size="30rpx" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
+              :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-[15px]"
+              font-size="15px" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
             </uv-input>
             <ie-image v-if="form.examType === EnumExamType.OHS" slot="right" src="/static/image/icon-lock.png"
               custom-class="w-24 h-30" mode="aspectFill" />
           </uv-form-item>
           <uv-form-item label="数学" prop="name" borderBottom>
             <uv-input v-model="scores.mathematics" border="none"
-              :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-30"
-              font-size="30rpx" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
+              :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-[15px]"
+              font-size="15px" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
             </uv-input>
             <ie-image v-if="form.examType === EnumExamType.OHS" slot="right" src="/static/image/icon-lock.png"
               custom-class="w-24 h-30" mode="aspectFill" />
@@ -55,8 +61,8 @@
           <uv-form-item label="外语" prop="name"
             :borderBottom="form.examType === EnumExamType.OHS || form.examType === EnumExamType.SVS">
             <uv-input v-model="scores.foreign" border="none"
-              :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-30"
-              font-size="30rpx" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
+              :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-[15px]"
+              font-size="15px" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
             </uv-input>
             <ie-image v-if="form.examType === EnumExamType.OHS" slot="right" src="/static/image/icon-lock.png"
               custom-class="w-24 h-30" mode="aspectFill" />
@@ -64,16 +70,16 @@
           <block v-if="[EnumExamType.OHS, EnumExamType.SVS].includes(form.examType)">
             <uv-form-item label="物理" prop="name" borderBottom>
               <uv-input v-model="scores.physics" border="none"
-                :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-30"
-                font-size="30rpx" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
+                :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-[15px]"
+                font-size="15px" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
               </uv-input>
               <ie-image v-if="form.examType === EnumExamType.OHS" slot="right" src="/static/image/icon-lock.png"
                 custom-class="w-24 h-30" mode="aspectFill" />
             </uv-form-item>
             <uv-form-item label="政治" prop="name">
               <uv-input v-model="scores.political" border="none"
-                :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-30"
-                font-size="30rpx" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
+                :placeholder="form.examType === EnumExamType.OHS ? '' : '请输入'" placeholderClass="text-[15px]"
+                font-size="15px" :custom-style="customStyle" :readonly="form.examType === EnumExamType.OHS">
               </uv-input>
               <ie-image v-if="form.examType === EnumExamType.OHS" slot="right" src="/static/image/icon-lock.png"
                 custom-class="w-24 h-30" mode="aspectFill" />
@@ -83,8 +89,8 @@
 
         <content-card v-if="([EnumExamType.OHS, EnumExamType.SVS].includes(form.examType))" title="职业技能成绩">
           <uv-form-item label="职业技能" prop="name">
-            <uv-input v-model.number="scores.skill" border="none" placeholder="请输入" placeholderClass="text-30"
-              font-size="30rpx" :custom-style="customStyle">
+            <uv-input v-model.number="scores.skill" border="none" placeholder="请输入" placeholderClass="text-[15px]"
+              font-size="15px" :custom-style="customStyle">
             </uv-input>
           </uv-form-item>
         </content-card>
@@ -92,8 +98,8 @@
         <template v-if="userStore.isStudent">
           <content-card v-if="userStore.isVip" title="学校信息">
             <uv-form-item label="学校名称" prop="form.name" borderBottom>
-              <uv-input v-model="form.schoolName" border="none" placeholder="" placeholderClass="text-30"
-                font-size="30rpx" :custom-style="customStyle" readonly>
+              <uv-input v-model="form.schoolName" border="none" placeholder="" placeholderClass="text-[15px]"
+                font-size="15px" :custom-style="customStyle" readonly>
               </uv-input>
               <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30" mode="aspectFill" />
             </uv-form-item>
@@ -110,14 +116,14 @@
         </template>
         <content-card v-else-if="userStore.isTeacher" title="学校信息">
           <uv-form-item label="学校名称" prop="form.campusName" borderBottom>
-            <uv-input v-model="form.campusName" border="none" placeholder="" placeholderClass="text-30"
-              font-size="30rpx" :custom-style="customStyle" readonly>
+            <uv-input v-model="form.campusName" border="none" placeholder="" placeholderClass="text-[15px]"
+              font-size="15px" :custom-style="customStyle" readonly>
             </uv-input>
             <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30" mode="aspectFill" />
           </uv-form-item>
           <uv-form-item label="所在班级" prop="form.campusClassName">
-            <uv-input v-model="form.campusClassName" border="none" placeholder="" placeholderClass="text-30"
-              font-size="30rpx" :custom-style="customStyle" readonly>
+            <uv-input v-model="form.campusClassName" border="none" placeholder="" placeholderClass="text-[15px]"
+              font-size="15px" :custom-style="customStyle" readonly>
             </uv-input>
             <ie-image slot="right" src="/static/image/icon-lock.png" custom-class="w-24 h-30" mode="aspectFill" />
           </uv-form-item>
@@ -154,10 +160,15 @@ import { BindCardInfo, UserInfo } from '@/types/user';
 import { EnumDictName, EnumSmsApiType, EnumExamType } from '@/common/enum';
 import { validatePhone } from '@/hooks/useValidation';
 import { validateSms } from '@/api/modules/system';
+import { useExamType } from '@/composables/useExamType';
+import { DictItem } from '@/types';
+const { loadExamMajorData } = useExamType();
+
 const userStore = useUserStore();
 const userInfo = computed(() => userStore.userInfo);
 const cardInfo = computed(() => userStore.card);
 const { classList, loadClassData } = useSchool();
+const examMajorList = ref<DictItem[]>([]);
 
 const form = ref<UserInfo>({
   ...userInfo.value
@@ -184,6 +195,12 @@ const schoolClassDisabled = computed(() => {
   const { schoolId } = form.value;
   return schoolId === undefined || schoolId === null || pickerDisabled.value;
 });
+const examMajorName = computed(() => {
+  if (!form.value.examMajor) {
+    return '';
+  }
+  return examMajorList.value.find(item => item.dictValue === form.value.examMajor)?.dictLabel;
+});
 
 const handleSubmit = async () => {
   uni.$ie.showLoading();
@@ -243,8 +260,20 @@ const handleChangePhone = async () => {
   form.value.phonenumber = phoneForm.value.phone;
   popupRef.value.close();
 }
-onLoad(() => {
+const initData = () => {
   loadClassData(cardInfo.value?.schoolId);
+  // 对口升学加载专业类别数据
+  if (form.value.examType === EnumExamType.VHS) {
+    uni.$ie.showLoading();
+    loadExamMajorData(form.value.location, form.value.examType).then(res => {
+      examMajorList.value = res || [];
+    }).finally(() => {
+      uni.$ie.hideLoading();
+    });
+  }
+}
+onLoad(() => {
+  initData();
 });
 </script>
 

+ 2 - 2
src/uni_modules/uv-form/components/uv-form-item/uv-form-item.vue

@@ -189,8 +189,8 @@ export default {
                     left: -9px;
                     color: $uv-error;
                     line-height: 20px;
-                    font-size: 20px;
-                    top: 3px;
+                    font-size: 14px;
+                    top: 0px;
                 }
 
                 &__label {