ソースを参照

volunteer index - tier

abpcoder 2 週間 前
コミット
e875b52294

+ 4 - 0
src/common/routes.ts

@@ -31,6 +31,10 @@ export const routes = {
    * 职业详情
    */
   careerDetail: '/pagesOther/pages/career/detail/detail',
+  /**
+   * 测录取概率
+   */
+  voluntaryIndex: '/pagesOther/pages/voluntary/index/index',
 } as const;
 
 export type Routes = keyof typeof routes;

+ 6 - 0
src/pages.json

@@ -98,6 +98,12 @@
           "style": {
             "navigationBarTitleText": ""
           }
+        },
+        {
+          "path": "pages/voluntary/index/index",
+          "style": {
+            "navigationBarTitleText": ""
+          }
         }
       ]
     },

+ 4 - 1
src/pagesMain/pages/volunteer/components/volunteer-banner.vue

@@ -13,9 +13,12 @@
 
 <script setup lang="ts" name="VolunteerBanner">
 import VolunteerBannerItem from "@/pagesMain/pages/volunteer/components/volunteer-banner-item.vue";
+import {useTransferPage} from "@/hooks/useTransferPage";
+import {routes} from "@/common/routes";
 
+const {transferTo} = useTransferPage()
 const goRateCalc = function () {
-    console.log('goRateCalc implement')
+    transferTo(routes.voluntaryIndex)
 }
 const goSkillCalc = function () {
     console.log('goSkillCalc implement')

+ 4 - 4
src/pagesMain/pages/volunteer/components/volunteer-policy-item.vue

@@ -1,10 +1,10 @@
 <template>
-    <view class="p-28 flex flex-between items-center bg-[#F6F8FA] rounded-xl relative">
+    <view class="pl-28 pr-18 py-28 flex flex-between items-center bg-[#F6F8FA] rounded-xl">
         <view>
-            <view class="break-keep text-sm text-fore-title font-bold">{{title}}</view>
-            <view class="mt-5 break-keep text-3xs text-fore-tip">{{desc}}</view>
+            <view class="text-nowrap text-sm text-fore-title font-bold">{{title}}</view>
+            <view class="mt-5 text-nowrap text-3xs text-fore-tip">{{desc}}</view>
         </view>
-        <ie-image is-oss :src="icon" custom-class="w-108 absolute right-20" />
+        <ie-image is-oss :src="icon" custom-class="w-108" />
     </view>
 </template>
 

+ 37 - 0
src/pagesMain/pages/volunteer/components/volunteer-tier-item.vue

@@ -0,0 +1,37 @@
+<template>
+    <view class="rounded-xl bg-gradient-to-b w-[230px] min-w-[230px] volunteer-tier-item"
+          :class="[data.colorFrom, data.colorTo]">
+        <view class="h-90 px-30 flex justify-between items-center">
+            <view class="flex">
+                <ie-image is-oss src="/volunteer/index/tier_medal.png" custom-class="w-48"/>
+                <text class="ml-8 text-base font-bold" :class="data.colorText">{{ data.typeName }}</text>
+            </view>
+            <view class="text-sm text-fore-light flex items-center">
+                <text>更多</text>
+                <uv-icon name="arrow-right" color="info"/>
+            </view>
+        </view>
+        <uv-line/>
+        <view class="mt-10 px-30 text-sm" :class="data.colorText">{{ data.desc }}</view>
+        <view class="p-30 flex flex-col gap-20">
+            <view v-for="(u, i) in data.list" class="flex text-sm">
+                <view class="w-20 text-fore-light">{{i+1}}</view>
+                <view class="text-fore-title truncate">{{u.name}}</view>
+            </view>
+        </view>
+    </view>
+</template>
+
+<script setup lang="ts" name="VolunteerTierItem">
+import {Tier} from '@/types/major'
+
+defineProps<{
+    data: Tier
+}>()
+</script>
+
+<style scoped lang="scss">
+.volunteer-tier-item + .volunteer-tier-item {
+    margin-left: 28rpx;
+}
+</style>

+ 75 - 0
src/pagesMain/pages/volunteer/components/volunteer-tier.vue

@@ -0,0 +1,75 @@
+<template>
+    <view class="px-28 py-16">
+        <view class="flex justify-between items-center">
+            <view class="text-lg font-bold text-fore-title">院校梯队</view>
+            <view class="text-sm text-fore-light flex items-center">
+                <text>更多</text>
+                <uv-icon name="arrow-right" color="info"/>
+            </view>
+        </view>
+        <uv-scroll-list class="mt-28">
+            <volunteer-tier-item v-for="(t,i) in list" :key="i" :data="t"/>
+        </uv-scroll-list>
+    </view>
+</template>
+
+<script setup lang="ts" name="VolunteerTier">
+import {Tier} from "@/types/major";
+import VolunteerTierItem from "@/pagesMain/pages/volunteer/components/volunteer-tier-item.vue";
+
+const list = ref<Tier[]>([{
+    typeName: '第一梯队',
+    typeValue: 1,
+    desc: '学考语数外255分以上',
+    colorFrom: 'from-[#F6FCFF]',
+    colorTo: 'to-[#EBF9FF]',
+    colorText: 'text-[#19517F]',
+    list: [{
+        id: 1,
+        name: '长沙民政职业技术学院',
+    }, {
+        id: 2,
+        name: '长沙电力职业技术学院',
+    }, {
+        id: 3,
+        name: '湖南铁道职业技术学院',
+    }, {
+        id: 4,
+        name: '湖南生物机电职业技术学院',
+    }, {
+        id: 5,
+        name: '湖南高速铁路职业技术学院',
+    }, {
+        id: 6,
+        name: '长沙商贸旅游职业技术学院',
+    }]
+}, {
+    typeName: '第二梯队',
+    typeValue: 2,
+    desc: '学考语数外255分以上',
+    colorFrom: 'from-[#F4FFFC]',
+    colorTo: 'to-[#E6FFF8]',
+    colorText: 'text-[#0E4C3C]',
+    list: []
+}, {
+    typeName: '第三梯队',
+    typeValue: 2,
+    desc: '学考语数外255分以上',
+    colorFrom: 'from-[#F6FCFF]',
+    colorTo: 'to-[#EBF9FF]',
+    colorText: 'text-[#19517F]',
+    list: []
+}, {
+    typeName: '第四梯队',
+    typeValue: 2,
+    desc: '学考语数外255分以上',
+    colorFrom: 'from-[#F4FFFC]',
+    colorTo: 'to-[#E6FFF8]',
+    colorText: 'text-[#0E4C3C]',
+    list: []
+}])
+</script>
+
+<style scoped>
+
+</style>

+ 2 - 0
src/pagesMain/pages/volunteer/volunteer.vue

@@ -19,6 +19,7 @@
         <volunteer-menu/>
         <ie-gap/>
         <volunteer-policy/>
+        <volunteer-echelon/>
         <template #tabbar>
             <ie-tabbar :active="1"/>
         </template>
@@ -34,6 +35,7 @@ import {useNavbar} from "@/hooks/useNavbar";
 import VolunteerBanner from "@/pagesMain/pages/volunteer/components/volunteer-banner.vue";
 import VolunteerMenu from "@/pagesMain/pages/volunteer/components/volunteer-menu.vue";
 import VolunteerPolicy from "@/pagesMain/pages/volunteer/components/volunteer-policy.vue";
+import VolunteerEchelon from "@/pagesMain/pages/volunteer/components/volunteer-tier.vue";
 
 const {transferTo} = useTransferPage();
 const userStore = useUserStore();

+ 19 - 0
src/pagesOther/pages/voluntary/index/index.vue

@@ -0,0 +1,19 @@
+<template>
+    <ie-page bg-color="#F6F8FA">
+        <ie-navbar title="测录取概率" transparent bg-color="#FFFFFF" title-color="black" :keep-title-color="true" />
+        <ie-image is-oss src="/volunteer/voluntary/index/banner.png" />
+        <view class="mx-30 -mt-180 z-1 bg-white rounded-xl p-35 min-h-[500px]">
+            1233
+        </view>
+    </ie-page>
+</template>
+
+<script setup lang="ts">
+import {useNavbar} from "@/hooks/useNavbar";
+
+const {baseStickyTop} = useNavbar()
+</script>
+
+<style lang="scss">
+
+</style>

+ 145 - 129
src/types/major.ts

@@ -2,150 +2,166 @@
  * 专业项接口
  */
 export interface MajorItem {
-  id: number;
-  name: string;
-  type: string;
-  level: number;
-  code: string;
-  childCount: number;
-  children: MajorItem[];
-  learnYearArab: string;
+    id: number;
+    name: string;
+    type: string;
+    level: number;
+    code: string;
+    childCount: number;
+    children: MajorItem[];
+    learnYearArab: string;
 }
 
 /**
  * 专业树查询参数
  */
 export interface MajorTreeQueryDTO {
-  name?: string;
-  level?: number;
+    name?: string;
+    level?: number;
 }
 
 /**
  * 专业详情接口
  */
 export interface MajorOverview {
-  /** 接续高职本科专业举例 */
-  benMajors: string;
-  /** 大类名称 */
-  bigName: string;
-  /** 子级数量 */
-  childCount: number;
-  /** 专业代码 */
-  code: string;
-  /** 代码列表 */
-  codes: string[] | null;
-  /** 创建人 */
-  createBy: string | null;
-  /** 创建时间 */
-  createTime: string | null;
-  /** 学位 */
-  degree: string;
-  /** 教育层次:zhuan-专科,ben-本科 */
-  eduLevel: string;
-  /** 培养目标 */
-  eduObjective: string;
-  /** 培养要求 */
-  eduRequirement: string;
-  /** 就业热度 */
-  employmentHeat: number;
-  /** 知名学者 */
-  famousScholar: string;
-  /** 女性比例 */
-  femaleRatio: number;
-  /** 女性比例文本 */
-  femaleRatioText: string;
-  /** 点击量 */
-  hits: number;
-  /** 专业ID */
-  id: number;
-  /** 实习描述 */
-  internshipDesc: string;
-  /** 专业介绍 */
-  introduction: string;
-  /** 是否收藏 */
-  isCollect: boolean;
-  /** 就业方向 */
-  jobDirection: string;
-  /** 就业文本 */
-  jobText: string | null;
-  /** 学制(数字) */
-  learnYear: string;
-  /** 学制(阿拉伯数字文本) */
-  learnYearArab: string;
-  /** 学制(中文文本) */
-  learnYearZh: string;
-  /** 层级 */
-  level: number;
-  /** 理科比例 */
-  lkRatio: number;
-  /** 理科比例文本 */
-  lkRatiotext: string;
-  /** 知识与能力 */
-  loreAndAbility: string;
-  /** 主要课程 */
-  mainCourse: string;
-  /** 男性比例 */
-  maleRatio: number;
-  /** 男性比例文本 */
-  maleRatioText: string;
-  /** 专业ID(另一个字段) */
-  marjorId: number;
-  /** 中类名称 */
-  middleName: string;
-  /** 专业名称 */
-  name: string;
-  /** 开设院校数量 */
-  openCollegeCount: number;
-  /** 资格证书 */
-  qualification: string;
-  /** 相关专业 */
-  relationMajors: string;
-  /** 备注 */
-  remark: string | null;
-  /** 薪资 */
-  salary: number | null;
-  /** 学习方向 */
-  studyDirection: string | null;
-  /** 选科要求 */
-  subjectRequirement: string;
-  /** 摘要 */
-  summary: string | null;
-  /** 更新人 */
-  updateBy: string | null;
-  /** 更新时间 */
-  updateTime: string | null;
-  /** 文科比例 */
-  wkRatio: number;
-  /** 文科比例文本 */
-  wkRatioText: string;
-  /** 接续中职专业 */
-  zhongzhiMajors: string;
-  /** 专升本方向 */
-  zhuanToBenOrient: string;
+    /** 接续高职本科专业举例 */
+    benMajors: string;
+    /** 大类名称 */
+    bigName: string;
+    /** 子级数量 */
+    childCount: number;
+    /** 专业代码 */
+    code: string;
+    /** 代码列表 */
+    codes: string[] | null;
+    /** 创建人 */
+    createBy: string | null;
+    /** 创建时间 */
+    createTime: string | null;
+    /** 学位 */
+    degree: string;
+    /** 教育层次:zhuan-专科,ben-本科 */
+    eduLevel: string;
+    /** 培养目标 */
+    eduObjective: string;
+    /** 培养要求 */
+    eduRequirement: string;
+    /** 就业热度 */
+    employmentHeat: number;
+    /** 知名学者 */
+    famousScholar: string;
+    /** 女性比例 */
+    femaleRatio: number;
+    /** 女性比例文本 */
+    femaleRatioText: string;
+    /** 点击量 */
+    hits: number;
+    /** 专业ID */
+    id: number;
+    /** 实习描述 */
+    internshipDesc: string;
+    /** 专业介绍 */
+    introduction: string;
+    /** 是否收藏 */
+    isCollect: boolean;
+    /** 就业方向 */
+    jobDirection: string;
+    /** 就业文本 */
+    jobText: string | null;
+    /** 学制(数字) */
+    learnYear: string;
+    /** 学制(阿拉伯数字文本) */
+    learnYearArab: string;
+    /** 学制(中文文本) */
+    learnYearZh: string;
+    /** 层级 */
+    level: number;
+    /** 理科比例 */
+    lkRatio: number;
+    /** 理科比例文本 */
+    lkRatiotext: string;
+    /** 知识与能力 */
+    loreAndAbility: string;
+    /** 主要课程 */
+    mainCourse: string;
+    /** 男性比例 */
+    maleRatio: number;
+    /** 男性比例文本 */
+    maleRatioText: string;
+    /** 专业ID(另一个字段) */
+    marjorId: number;
+    /** 中类名称 */
+    middleName: string;
+    /** 专业名称 */
+    name: string;
+    /** 开设院校数量 */
+    openCollegeCount: number;
+    /** 资格证书 */
+    qualification: string;
+    /** 相关专业 */
+    relationMajors: string;
+    /** 备注 */
+    remark: string | null;
+    /** 薪资 */
+    salary: number | null;
+    /** 学习方向 */
+    studyDirection: string | null;
+    /** 选科要求 */
+    subjectRequirement: string;
+    /** 摘要 */
+    summary: string | null;
+    /** 更新人 */
+    updateBy: string | null;
+    /** 更新时间 */
+    updateTime: string | null;
+    /** 文科比例 */
+    wkRatio: number;
+    /** 文科比例文本 */
+    wkRatioText: string;
+    /** 接续中职专业 */
+    zhongzhiMajors: string;
+    /** 专升本方向 */
+    zhuanToBenOrient: string;
 }
 
 export interface UniversityQueryDTO {
-  code: string;
-  pageNum: number;
-  pageSize: number;
+    code: string;
+    pageNum: number;
+    pageSize: number;
 }
+
 export interface University {
-  address: string;
-  area: number;
-  bxLevel: string;
-  cityName: string;
-  code: string;
-  collect: boolean;
-  comScore: string;
-  enrollLocation: string;
-  features: string;
-  hits: number;
-  id: number;
-  location: string;
-  logo: string;
-  name: string;
-  natureTypeCN: string;
-  star: string;
-  type: string;
-  webSite: string;
+    address: string;
+    area: number;
+    bxLevel: string;
+    cityName: string;
+    code: string;
+    collect: boolean;
+    comScore: string;
+    enrollLocation: string;
+    features: string;
+    hits: number;
+    id: number;
+    location: string;
+    logo: string;
+    name: string;
+    natureTypeCN: string;
+    star: string;
+    type: string;
+    webSite: string;
+}
+
+export interface UniversitySimple {
+    id: number;
+    name: string;
+}
+
+export interface Tier {
+    typeName: string
+    typeValue: string | number
+    desc: string
+    colorFrom?: string
+    colorTo?: string
+    colorText: string
+    list: UniversitySimple[]
 }