feat: 新的保存逻辑
parent
7a4d32eaa2
commit
b7b3baf17b
|
|
@ -35,6 +35,10 @@ const props = defineProps({
|
||||||
readonly: {
|
readonly: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
|
},
|
||||||
|
inputDirection: {
|
||||||
|
type: String as PropType<'text-left' | 'text-right' | 'text-center'>,
|
||||||
|
default: 'text-left'
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -52,7 +56,7 @@ const innerValue = computed({
|
||||||
<template>
|
<template>
|
||||||
<view class="relative w-full" :class="rootClass">
|
<view class="relative w-full" :class="rootClass">
|
||||||
<input :type="type" v-model="innerValue" :placeholder="placeholder" confirm-type="done" :disabled="readonly"
|
<input :type="type" v-model="innerValue" :placeholder="placeholder" confirm-type="done" :disabled="readonly"
|
||||||
placeholder-style="color:#C5C8D1;font-size:30rpx;text-align:left;" class="text-left" />
|
:placeholder-style="`color:#C5C8D1;font-size:30rpx;${inputDirection === 'text-right' ? 'text-align:right;' : inputDirection === 'text-center' ? 'text-align:center;' : 'text-align:left;'} `" />
|
||||||
<view class="absolute top-0 left-0 w-full h-full" v-if="readonly"></view>
|
<view class="absolute top-0 left-0 w-full h-full" v-if="readonly"></view>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -1,78 +1,89 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
type RadioValue = string | number | null | undefined
|
||||||
|
type RadioOptionValue = string | number | null | undefined
|
||||||
|
type RadioOption = Record<string, RadioOptionValue>
|
||||||
|
|
||||||
const props = defineProps({
|
interface RadioProps {
|
||||||
value: {
|
value?: RadioValue
|
||||||
type: [String,Number],
|
options?: RadioOption[]
|
||||||
default: ""
|
valueKey?: string
|
||||||
},
|
labelKey?: string
|
||||||
options: {
|
customRootClass?: string
|
||||||
type: Array,
|
customRootWidth?: string
|
||||||
default: () => []
|
customRootColsClass?: string
|
||||||
},
|
customItemClass?: string
|
||||||
valueKey: {
|
defaultItemClass?: string
|
||||||
type: String,
|
activeItemClass?: string
|
||||||
default: ''
|
}
|
||||||
},
|
|
||||||
labelKey: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
|
|
||||||
customRootClass: {
|
const props = withDefaults(defineProps<RadioProps>(), {
|
||||||
type: String,
|
value: '',
|
||||||
default: ""
|
options: () => [],
|
||||||
},
|
valueKey: '',
|
||||||
|
labelKey: '',
|
||||||
customRootWidth:{
|
customRootClass: '',
|
||||||
type: String,
|
customRootWidth: '',
|
||||||
default: ""
|
customRootColsClass: 'grid gap-[20rpx] grid-cols-3',
|
||||||
},
|
customItemClass: '',
|
||||||
|
defaultItemClass: 'bg-[#F3F4F8] border-[#F3F4F8]',
|
||||||
customRootColsClass:{
|
activeItemClass: 'bg-white text-[#1580FF] border-[#1580FF]',
|
||||||
type: String,
|
|
||||||
default: "grid gap-[20rpx] grid-cols-3"
|
|
||||||
},
|
|
||||||
|
|
||||||
customItemClass:{
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
|
|
||||||
defaultItemClass:{
|
|
||||||
type: String,
|
|
||||||
default: "bg-[#F3F4F8] border-[#F3F4F8]"
|
|
||||||
},
|
|
||||||
|
|
||||||
activeItemClass:{
|
|
||||||
type:String,
|
|
||||||
default: "bg-white text-[#1580FF] border-[#1580FF]"
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const emits = defineEmits<{
|
||||||
|
'update:value': [value: RadioValue]
|
||||||
|
'update:label': [label: string]
|
||||||
|
'change': []
|
||||||
|
}>()
|
||||||
|
|
||||||
|
type ToggleFn = (value: RadioValue) => void
|
||||||
|
|
||||||
|
const getOptionValue = (option: RadioOption): RadioValue => option[props.valueKey]
|
||||||
|
|
||||||
|
function getOptionLabel(option: RadioOption): string {
|
||||||
|
const label = option[props.labelKey]
|
||||||
|
|
||||||
|
return label == null ? '' : String(label)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getOptionKey(option: RadioOption, index: number): string | number {
|
||||||
|
const value = getOptionValue(option)
|
||||||
|
|
||||||
|
return value ?? index
|
||||||
|
}
|
||||||
|
|
||||||
const innerValue = computed({
|
const innerValue = computed({
|
||||||
get: () => props.value,
|
get: () => props.value,
|
||||||
set: (val) => emits("update:value",val)
|
set: val => emits('update:value', val),
|
||||||
})
|
})
|
||||||
const emits = defineEmits(["update:value","update:label","change"])
|
|
||||||
|
|
||||||
const handleToggle = (val:any) => {
|
function handleToggle(val: RadioValue) {
|
||||||
const chooseItem = props.options.filter(item => item[props.valueKey] === val)
|
const chooseItem = props.options.find(item => getOptionValue(item) === val)
|
||||||
emits("update:value",val)
|
|
||||||
emits("update:label",chooseItem[0][props.labelKey])
|
emits('update:value', val)
|
||||||
emits("change")
|
emits('update:label', chooseItem ? getOptionLabel(chooseItem) : '')
|
||||||
|
emits('change')
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleOptionClick(option: RadioOption, toggle: ToggleFn) {
|
||||||
|
const value = getOptionValue(option)
|
||||||
|
|
||||||
|
toggle(value)
|
||||||
|
handleToggle(value)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<sar-radio-group v-model="innerValue">
|
<sar-radio-group v-model="innerValue">
|
||||||
<template #custom="{ toggle, value }">
|
<template #custom="{ toggle, value: currentValue }">
|
||||||
<view :class="`bg-white rounded-[0_0_12rpx_12rpx] ${customRootClass} ${customRootColsClass}`">
|
<view :class="`bg-white rounded-[0_0_12rpx_12rpx] ${customRootClass} ${customRootColsClass}`">
|
||||||
<view v-for="val in options" :key="val[valueKey]"
|
<view
|
||||||
:class="`${val[valueKey] === value ? activeItemClass : defaultItemClass} ${customItemClass} rounded-[12rpx] text-[28rpx]`"
|
v-for="(option, index) in options" :key="getOptionKey(option, index)"
|
||||||
@click="() => {toggle(val[valueKey]); handleToggle(val[valueKey])}">
|
:class="`${getOptionValue(option) === currentValue ? activeItemClass : defaultItemClass} ${customItemClass} rounded-[12rpx] text-[28rpx]`"
|
||||||
{{ val[labelKey] }}
|
@click="handleOptionClick(option, toggle)"
|
||||||
</view>
|
>
|
||||||
</view>
|
{{ getOptionLabel(option) }}
|
||||||
</template>
|
</view>
|
||||||
</sar-radio-group>
|
</view>
|
||||||
|
</template>
|
||||||
|
</sar-radio-group>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -28,8 +28,8 @@ const handleBack = () => {
|
||||||
uni.navigateBack({ delta: 1 })
|
uni.navigateBack({ delta: 1 })
|
||||||
}
|
}
|
||||||
|
|
||||||
const areaList = ref([])
|
const areaList = ref<any[]>([])
|
||||||
const natureList = ref([])
|
const natureList = ref<any[]>()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -80,8 +80,8 @@ const visibleFlag1 = ref(false)
|
||||||
const visibleFlag2 = ref(false)
|
const visibleFlag2 = ref(false)
|
||||||
const visibleFlag3 = ref(false)
|
const visibleFlag3 = ref(false)
|
||||||
|
|
||||||
const partialData = ref([])
|
const partialData = ref<any[]>([])
|
||||||
const yearList = ref([])
|
const yearList = ref<any[]>([])
|
||||||
|
|
||||||
const handleChange = () => {
|
const handleChange = () => {
|
||||||
visibleFlag1.value = false;
|
visibleFlag1.value = false;
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@ definePage({
|
||||||
})
|
})
|
||||||
const wishlistStore = useWishlistStore()
|
const wishlistStore = useWishlistStore()
|
||||||
|
|
||||||
const wishlist = ref([])
|
const wishlist = ref<any[]>([])
|
||||||
|
|
||||||
const handleDeleteWishlist = (val,index) => {
|
const handleDeleteWishlist = (val:any,index:number) => {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: "确认需要删除吗?", success: ({confirm,cancel}) => {
|
title: "确认需要删除吗?", success: ({confirm,cancel}) => {
|
||||||
if(confirm){
|
if(confirm){
|
||||||
|
|
@ -23,15 +23,15 @@ const handleDeleteWishlist = (val,index) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const getTag = (val) => {
|
const getTag = (val:any) => {
|
||||||
let content = JSON.parse(val.contents)
|
let content = JSON.parse(val.contents)
|
||||||
let schools = content.schools
|
let schools = content.schools
|
||||||
let zbsTag = schools.some(item => item.type === '指标生')
|
let zbsTag = schools.some((item:{type:string}) => item.type === '指标生')
|
||||||
let adjustTag = content.adjust
|
let adjustTag = content.adjust
|
||||||
return zbsTag ? "指标生" : adjustTag ? "服从调剂" : false
|
return zbsTag ? "指标生" : adjustTag ? "服从调剂" : false
|
||||||
}
|
}
|
||||||
|
|
||||||
const navigateToDetail = (val) => {
|
const navigateToDetail = (val:any) => {
|
||||||
let content = JSON.parse(val.contents)
|
let content = JSON.parse(val.contents)
|
||||||
wishlistStore.setExtendWishlist({title:val.title,contents:val.contents,adjust:content.adjust,batchName:val.batchName})
|
wishlistStore.setExtendWishlist({title:val.title,contents:val.contents,adjust:content.adjust,batchName:val.batchName})
|
||||||
uni.navigateTo({url:"/pages-sub/me/wishlistInfo"})
|
uni.navigateTo({url:"/pages-sub/me/wishlistInfo"})
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import MxRadio from "@/pages-sub/components/radio/index.vue?async"
|
||||||
import { getAreaList, getBusSchoolAdmission, getSchoolNature } from "@/service"
|
import { getAreaList, getBusSchoolAdmission, getSchoolNature } from "@/service"
|
||||||
import { useWishlistStore } from "@/store"
|
import { useWishlistStore } from "@/store"
|
||||||
|
|
||||||
const tableData = ref([])
|
const tableData = ref<any[]>([])
|
||||||
const tableColumns = [
|
const tableColumns = [
|
||||||
{ title: '院校名称', prop: 'schoolName', width: '40%', align: 'left' },
|
{ title: '院校名称', prop: 'schoolName', width: '40%', align: 'left' },
|
||||||
{ title: '冲稳保', prop: 'tags', width: "15%", align: "center" },
|
{ title: '冲稳保', prop: 'tags', width: "15%", align: "center" },
|
||||||
|
|
@ -14,10 +14,10 @@ const tableColumns = [
|
||||||
] as const
|
] as const
|
||||||
|
|
||||||
const wishlistStore = useWishlistStore()
|
const wishlistStore = useWishlistStore()
|
||||||
const chooseData = ref([])
|
const chooseData = ref<any[]>([])
|
||||||
const chooseDataMap = new Map()
|
const chooseDataMap = new Map()
|
||||||
|
|
||||||
const handleChoose = (val) => {
|
const handleChoose = (val:any) => {
|
||||||
|
|
||||||
if (chooseData.value.includes(val.schoolId)) {
|
if (chooseData.value.includes(val.schoolId)) {
|
||||||
const index = chooseData.value.indexOf(val.schoolId);
|
const index = chooseData.value.indexOf(val.schoolId);
|
||||||
|
|
@ -27,13 +27,13 @@ const handleChoose = (val) => {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (chooseData.value.length > 2) {
|
if (chooseData.value.length > 2) {
|
||||||
uni.showToast({ title: "第二志愿最多只能3个", icon: "none" })
|
uni.showToast({ title: "志愿最多只能3个", icon: "none" })
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
chooseData.value.push(val.schoolId);
|
chooseData.value.push(val.schoolId);
|
||||||
chooseDataMap.set(val.schoolId, val)
|
chooseDataMap.set(val.schoolId, val)
|
||||||
}
|
}
|
||||||
let tempSchool = []
|
let tempSchool:any[] = []
|
||||||
chooseDataMap.forEach((val, key) => {
|
chooseDataMap.forEach((val, key) => {
|
||||||
tempSchool.push({ ...val, type: "secondBatch" })
|
tempSchool.push({ ...val, type: "secondBatch" })
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,10 @@
|
||||||
import { systemInfo } from '@/utils/systemInfo'
|
import { systemInfo } from '@/utils/systemInfo'
|
||||||
import MxRadio from "@/pages-sub/components/radio/index.vue"
|
import MxRadio from "@/pages-sub/components/radio/index.vue"
|
||||||
import MxInput from "@/pages-sub/components/input/index.vue"
|
import MxInput from "@/pages-sub/components/input/index.vue"
|
||||||
import { getGradeList, getAreaList, saveUserInfo } from "@/service"
|
import { getGradeList, getAreaList, saveUserAreaScore } from "@/service"
|
||||||
|
|
||||||
import { useUserStore } from "@/store"
|
import { useUserStore } from "@/store"
|
||||||
import { storeToRefs } from "pinia";
|
import { storeToRefs } from "pinia";
|
||||||
import { checkEmptyValues } from '@/utils'
|
|
||||||
|
|
||||||
// #ifdef MP-WEIXIN
|
// #ifdef MP-WEIXIN
|
||||||
definePage({
|
definePage({
|
||||||
|
|
@ -45,22 +44,15 @@ const userStore = useUserStore();
|
||||||
const { userInfo } = storeToRefs(userStore)
|
const { userInfo } = storeToRefs(userStore)
|
||||||
|
|
||||||
const handleSubmit = () => {
|
const handleSubmit = () => {
|
||||||
if (!userInfo.value.nickName || !userInfo.value.sex || checkEmptyValues(userInfo.value.userExtend, ["gradeId", "schoolName", "area"])) {
|
|
||||||
uni.showToast({ title: "完善所需信息", icon: "error" })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
let params = {
|
let params = {
|
||||||
nickName: userInfo.value.nickName,
|
|
||||||
gradeId: userInfo.value.userExtend.gradeId,
|
|
||||||
gradeName: userInfo.value.userExtend.gradeName,
|
|
||||||
areaName: userInfo.value.userExtend.area,
|
areaName: userInfo.value.userExtend.area,
|
||||||
schoolName: userInfo.value.userExtend.schoolName,
|
totalScore: userInfo.value.userExtend.score,
|
||||||
sex: userInfo.value.sex,
|
id: userInfo.value.userExtend.id
|
||||||
rank: userInfo.value.userExtend.rank
|
|
||||||
}
|
}
|
||||||
saveUserInfo({ data: params }).then((resp) => {
|
saveUserAreaScore({ data: params }).then((resp) => {
|
||||||
if (resp.code === 200) {
|
if (resp.code === 200) {
|
||||||
uni.navigateTo({ url: '/pages-sub/wishlist/create/second' })
|
uni.navigateTo({ url: '/pages-sub/wishlist/create/secondBatch' })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -117,16 +109,13 @@ onShow(() => {
|
||||||
</sar-navbar>
|
</sar-navbar>
|
||||||
|
|
||||||
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
|
<view class="flex items-center mx-[30rpx] mb-[20rpx]">
|
||||||
<view class="w-[112rpx] h-[104rpx] flex items-center">
|
|
||||||
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_01.png" mode="scaleToFill"
|
|
||||||
class="w-[112rpx] h-[104rpx]" />
|
|
||||||
</view>
|
|
||||||
<view class="flex flex-col ml-[10rpx]">
|
<view class="flex flex-col ml-[10rpx]">
|
||||||
<view class="text-[44rpx] font-500 mb-[14rpx]">完善基础信息</view>
|
<view class="text-[44rpx] font-500 mb-[14rpx]">一键生成志愿表</view>
|
||||||
<view class="text-[#B0B3B8] text-[30rpx]">详细的信息获取精准推荐</view>
|
<view class="text-[#B0B3B8] text-[30rpx]">生成我的专属志愿表</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="w-[160rpx] h-[160rpx] ml-auto">
|
<view class="w-[160rpx] h-[160rpx] ml-auto">
|
||||||
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_zk01.png" mode="scaleToFill"
|
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_zk03.png" mode="scaleToFill"
|
||||||
class="w-[160rpx] h-[160rpx]" />
|
class="w-[160rpx] h-[160rpx]" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -134,86 +123,47 @@ onShow(() => {
|
||||||
|
|
||||||
<form @submit="handleSubmit" class="flex-1 pb-safe">
|
<form @submit="handleSubmit" class="flex-1 pb-safe">
|
||||||
<view class="flex flex-col h-full">
|
<view class="flex flex-col h-full">
|
||||||
|
|
||||||
<view
|
<view
|
||||||
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
|
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] px-[30rpx] bg-[#F7F8FA] mb-[20rpx]">
|
||||||
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx]">学生姓名</view>
|
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">总分</view>
|
||||||
<view class="flex-1">
|
<view class="flex-1 flex items-center">
|
||||||
<input type="text" v-model="userInfo.nickName" placeholder="请输入姓名" confirm-type="done"
|
<MxInput type="number" v-model:value="userInfo.userExtend.score" placeholder="请填写"
|
||||||
placeholder-style="color:#C5C8D1;font-size:30rpx;text-align:left;" class="text-left">
|
root-class="text-right" class="w-full" inputDirection="text-right"/>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view
|
<view
|
||||||
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
|
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] px-[30rpx] bg-[#F7F8FA]">
|
||||||
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx]">性别</view>
|
|
||||||
<view class="flex-1 flex items-center" @click="handleOpenPopup('gender')">
|
|
||||||
<MxInput v-model:value="formData.genderLabel" placeholder="请选择您的性别" root-class="text-left"
|
|
||||||
:readonly="true" />
|
|
||||||
|
|
||||||
<view class="w-[18rpx] h-[36rpx] flex items-center ml-auto">
|
|
||||||
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_jiantou.png"
|
|
||||||
mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view
|
|
||||||
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
|
|
||||||
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx]">年级</view>
|
|
||||||
<view class="flex-1 flex items-center" @click="handleOpenPopup('grade')">
|
|
||||||
<MxInput v-model:value="userInfo.userExtend.gradeName" placeholder="请选择您的年级"
|
|
||||||
root-class="text-left" :readonly="true" />
|
|
||||||
|
|
||||||
<view class="w-[18rpx] h-[36rpx] flex items-center ml-auto">
|
|
||||||
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_jiantou.png"
|
|
||||||
mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view
|
|
||||||
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
|
|
||||||
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">中考所在区</view>
|
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">中考所在区</view>
|
||||||
<view class="flex-1 flex items-center" @click="handleOpenPopup('examinationArea')">
|
<view class="flex-1 flex items-center" @click="handleOpenPopup('examinationArea')">
|
||||||
<MxInput v-model:value="userInfo.userExtend.area" placeholder="请选择您的中考所在区"
|
<MxInput v-model:value="userInfo.userExtend.area" placeholder="请选择您的中考所在区"
|
||||||
root-class="text-left" :readonly="true" />
|
root-class="text-right" class="w-full" inputDirection="text-right" :readonly="true" />
|
||||||
|
|
||||||
<view class="w-[18rpx] h-[36rpx] flex items-center ml-auto">
|
<view class="w-[18rpx] h-[36rpx] flex items-center ml-[10rpx]">
|
||||||
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_jiantou.png"
|
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_jiantou.png"
|
||||||
mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
|
mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view
|
|
||||||
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
|
|
||||||
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">就读学校</view>
|
|
||||||
<view class="flex-1 flex items-center" @click="navigateToSchool">
|
|
||||||
<view class="flex-1">
|
|
||||||
<MxInput v-model:value="userInfo.userExtend.schoolName" placeholder="请选择您的就读学校"
|
|
||||||
root-class="text-left" :readonly="true" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="w-[18rpx] h-[36rpx] flex items-center ml-auto">
|
<view class="mx-[40rpx] mt-[68rpx] bg-[#FEF6F6] rounded-[16rpx]">
|
||||||
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_jiantou.png"
|
<view class="h-[52rpx] w-[178rpx] flex items-center m-[-8rpx] ml-[20rpx]">
|
||||||
mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
|
<image src="https://lw-zk.oss-cn-hangzhou.aliyuncs.com/img/home/tb_shuoming.png" mode="scaleToFill"
|
||||||
|
class="h-[52rpx] w-[178rpx]" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="flex flex-col text-[#E03C33] mt-[20rpx] pl-[26rpx] pr-[34rpx]">
|
||||||
|
<view class="text-[24rpx] mt-[4rpx]">
|
||||||
|
<view>根据济南2026年中考招生政策,进入模拟志愿填报阶段的考生,默认历史、生物、地理、道法等水平考试等级均已达到普通高中基础填报要求(C级及以上),本产品仅用于统招平行志愿的模拟。</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
|
||||||
|
|
||||||
<view
|
|
||||||
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid">
|
|
||||||
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">校内名次</view>
|
|
||||||
<view class="flex-1 flex items-center">
|
|
||||||
<input type="number" inputmode="numeric" v-model="userInfo.userExtend.rank"
|
|
||||||
placeholder="请输入您的校内名次" confirm-type="done"
|
|
||||||
placeholder-style="color:#C5C8D1;font-size:30rpx;text-align:left;" class="text-left">
|
|
||||||
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="px-[30rpx] py-[16rpx] border-t-solid border-t-[#ededed] border-t-1 mt-auto">
|
<view class="px-[30rpx] py-[16rpx] border-t-solid border-t-[#ededed] border-t-1 mt-auto">
|
||||||
<button form-type="submit" class="rounded-[16rpx] bg-[#1580FF] text-[#fff] submit-btn">下一步</button>
|
<button form-type="submit" class="rounded-[16rpx] bg-[#1580FF] text-[#fff] submit-btn">开始推荐</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</form>
|
</form>
|
||||||
|
|
@ -227,19 +177,8 @@ onShow(() => {
|
||||||
mode="scaleToFill" class="w-[36rpx] h-[36rpx]" />
|
mode="scaleToFill" class="w-[36rpx] h-[36rpx]" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<MxRadio v-model:value="userInfo.sex" v-model:label="formData.genderLabel" v-if="activeType == 'gender'"
|
|
||||||
:options="genderClassification" label-key="label" value-key="value"
|
|
||||||
custom-root-cols-class="grid grid-cols-2 items-center gap-[20rpx]"
|
|
||||||
custom-root-class="pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
|
|
||||||
active-item-class="bg-white text-[#1580FF] border-[#1580FF] border-[2rpx] border-solid" @change="visible = false" />
|
|
||||||
|
|
||||||
|
|
||||||
<MxRadio v-model:value="userInfo.userExtend.gradeId" v-model:label="userInfo.userExtend.gradeName"
|
|
||||||
v-if="activeType == 'grade'" :options="gradeClassification" label-key="label" value-key="value"
|
|
||||||
custom-root-cols-class="grid grid-cols-3 items-center gap-[20rpx]"
|
|
||||||
custom-root-class="pb-[20rpx]" custom-item-class="py-[12rpx] text-center "
|
|
||||||
active-item-class="bg-white text-[#1580FF] border-[#1580FF] border-[2rpx] border-solid" @change="visible = false"/>
|
|
||||||
|
|
||||||
<MxRadio v-model:value="userInfo.userExtend.area" v-if="activeType == 'examinationArea'"
|
<MxRadio v-model:value="userInfo.userExtend.area" v-if="activeType == 'examinationArea'"
|
||||||
:options="areaList" label-key="label" value-key="value"
|
:options="areaList" label-key="label" value-key="value"
|
||||||
custom-root-cols-class="grid grid-cols-3 items-center gap-[20rpx]"
|
custom-root-cols-class="grid grid-cols-3 items-center gap-[20rpx]"
|
||||||
|
|
|
||||||
|
|
@ -58,10 +58,15 @@ onBackPress(() => {
|
||||||
<view v-for="(val, index) in schools" :key="index" class="flex mt-[26rpx]">
|
<view v-for="(val, index) in schools" :key="index" class="flex mt-[26rpx]">
|
||||||
<view
|
<view
|
||||||
class="py-[29rpx] text-[30rpx] text-[#333] grid gap-[8rpx] bg-white px-[30rpx] py-[20rpx] not-last:mb-[30rpx] rounded-[16rpx] w-full">
|
class="py-[29rpx] text-[30rpx] text-[#333] grid gap-[8rpx] bg-white px-[30rpx] py-[20rpx] not-last:mb-[30rpx] rounded-[16rpx] w-full">
|
||||||
<view class="text-[32rpx] font-600">{{ val.schoolName }}</view>
|
<view class="text-[32rpx] font-600 flex items-center gap-[10rpx]">
|
||||||
|
<view
|
||||||
|
class="w-[44rpx] h-[44rpx] rounded-[8rpx] text-[26rpx] font-600 flex items-center justify-center"
|
||||||
|
:class="`${val.tags === '稳' ? 'text-[#FA8E23] bg-[#ffeede]' : val.tags === '保' ? 'bg-[#dcf6f0] text-[#15C496]' : 'bg-[#fce5e3] text-[#EB5241]'}`">
|
||||||
|
{{ val.tags }}</view>
|
||||||
|
{{ val.schoolName }}</view>
|
||||||
<view class="text-[24rpx] text-[#333]">{{new Date().getFullYear()}}计划招生:{{ val.planCount }}人</view>
|
<view class="text-[24rpx] text-[#333]">{{new Date().getFullYear()}}计划招生:{{ val.planCount }}人</view>
|
||||||
<!-- <view class="flex items-center">
|
<!-- <view class="flex items-center">
|
||||||
<view class="text-[#666] bg-[#F8F8F8] rounded-[8rpx] px-[10rpx] py-[4rpx]"
|
<view class="rgb(173 116 116) bg-[#F8F8F8] rounded-[8rpx] px-[10rpx] py-[4rpx]"
|
||||||
v-for="value in 2" :key="value">重点高中</view>
|
v-for="value in 2" :key="value">重点高中</view>
|
||||||
</view> -->
|
</view> -->
|
||||||
<view class="text-[#333] text-[24rpx]">
|
<view class="text-[#333] text-[24rpx]">
|
||||||
|
|
@ -70,24 +75,6 @@ onBackPress(() => {
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<view class=" bg-[#FEF6F6] rounded-[16rpx] mt-[30rpx]">
|
|
||||||
<view class="h-[52rpx] w-[178rpx] flex items-center m-[-8rpx] ml-[20rpx]">
|
|
||||||
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_shuoming.png"
|
|
||||||
mode="scaleToFill" class="h-[52rpx] w-[178rpx]" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="flex flex-col text-[#E03C33] py-[20rpx] pl-[26rpx] pr-[34rpx]">
|
|
||||||
<view class="text-[26rpx] mt-[4rpx]">
|
|
||||||
<view>
|
|
||||||
“二志愿录取成功后,不再进入后续批次。”
|
|
||||||
</view>
|
|
||||||
<view>
|
|
||||||
“建议选择目标明确的学校,同时关注第三批次平行志愿机会。”
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
<view class="grid grid-cols-2 gap-[20rpx] px-[28rpx] py-[16rpx]">
|
<view class="grid grid-cols-2 gap-[20rpx] px-[28rpx] py-[16rpx]">
|
||||||
<view class="rounded-[16rpx] bg-[#f5f5f5] text-[#333] text-[36rpx] py-[18rpx] text-center" @click="navigateToHome">重新测评</view>
|
<view class="rounded-[16rpx] bg-[#f5f5f5] text-[#333] text-[36rpx] py-[18rpx] text-center" @click="navigateToHome">重新测评</view>
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ const disableSubmit = computed(() => {
|
||||||
<sar-navbar show-back @back="handleBack" :fixed="true" fixation-style="top:unset;"
|
<sar-navbar show-back @back="handleBack" :fixed="true" fixation-style="top:unset;"
|
||||||
:root-style="{ '--sar-navbar-bg': `transparent`, '--sar-navbar-item-color': 'black', 'padding-top': `${systemInfo?.statusBarHeight}px` }">
|
:root-style="{ '--sar-navbar-bg': `transparent`, '--sar-navbar-item-color': 'black', 'padding-top': `${systemInfo?.statusBarHeight}px` }">
|
||||||
<template #title>
|
<template #title>
|
||||||
<view class="flex justify-center">第二批次</view>
|
<view class="flex justify-center">志愿表</view>
|
||||||
</template>
|
</template>
|
||||||
</sar-navbar>
|
</sar-navbar>
|
||||||
<view class="flex-1 overflow-y-auto">
|
<view class="flex-1 overflow-y-auto">
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ const navigateToFirst = () => {
|
||||||
|
|
||||||
const totalScore = ref(0)
|
const totalScore = ref(0)
|
||||||
onLoad(()=>{
|
onLoad(()=>{
|
||||||
getMyScore().then(resp => {
|
getMyScore().then(resp => {
|
||||||
if (resp.code === 200 && resp.result) {
|
if (resp.code === 200 && resp.result) {
|
||||||
totalScore.value = resp.result.totalScore
|
totalScore.value = resp.result.totalScore
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -300,3 +300,10 @@ export const getHistoryYearList = () => {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const saveUserAreaScore = (options: { data: any }) => {
|
||||||
|
return request<API.Response>('/api/busMiddleSchoolApply/add', {
|
||||||
|
method: "POST",
|
||||||
|
...options
|
||||||
|
})
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue