volunteer-secondary/src/pages-sub/wishlist/create/second.vue

222 lines
8.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<script lang="ts" setup>
import { systemInfo } from '@/utils/systemInfo'
import MxRadio from "@/pages-sub/components/radio/index.vue"
import MxInput from "@/pages-sub/components/input/index.vue"
import { getMyScore, getTalentAreaList, saveMyScore } from '@/service'
// #ifdef MP-WEIXIN
definePage({
style: {
navigationStyle: 'custom',
},
excludeLoginPath: false,
})
// #endif
// #ifndef MP-WEIXIN
definePage({
style: {
navigationStyle: 'custom',
transparentTitle: 'always',
navigationBarTitleText: ''
},
excludeLoginPath: false,
})
// #endif
const handleBack = () => {
uni.navigateBack({ delta: 1 })
}
const formData = ref({
chinese: "",
math: '',
english: '',
physics: '',
chemistry: '',
sports: '',
})
const cToE = {
'chinese': '语文',
"math": '数学',
'english': '英语',
physics: '物理',
chemistry: '化学',
sports: '体育'
}
const degreeFormData = ref({
geography: '',
politics: '',
biology: '',
history: '',
})
const ctoEWithDegree = {
geography: '地理',
politics: '政治',
biology: '生物',
history: '历史'
}
const handleSubmit = () => {
saveMyScore({data:{
...formData.value,
...degreeFormData.value
}}).then(resp => {
if(resp.code === 200){
uni.navigateTo({ url: "/pages-sub/wishlist/create/third" })
}
})
}
const activeType = ref("")
const visible = ref(false)
const onOverlayClick = () => {
visible.value = false
}
const gradeClassification = ref([])
const handleOpenPopup = (type: string) => {
visible.value = true
activeType.value = type
}
const handleNumberChange = (event, key) => {
const value = +event.detail.value
if (['chinese', 'math', 'english'].includes(key) && value > 150) {
formData.value[key] = '150'
} else if (['physics', 'chemistry'].includes(key) && value > 100) {
formData.value[key] = '100'
} else if (key === 'sports' && value > 60) {
formData.value[key] = '60'
}
}
onLoad(() => {
getTalentAreaList({ query: { typeId: '738657273081925' } }).then((resp) => {
gradeClassification.value = resp.result
})
getMyScore().then(resp => {
if (resp.code === 200 && resp.result) {
formData.value.chinese = resp.result.chinese
formData.value.math = resp.result.math
formData.value.english = resp.result.english
formData.value.chemistry = resp.result.chemistry
formData.value.sports = resp.result.sports
formData.value.physics = resp.result.physics
degreeFormData.value.biology = resp.result.biology
degreeFormData.value.history = resp.result.history
degreeFormData.value.geography = resp.result.geography
degreeFormData.value.politics = resp.result.politics
}
})
})
</script>
<template>
<view class="flex flex-col custom-background h-screen">
<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` }">
<template #title>
<view class="flex justify-center">志愿填报</view>
</template>
</sar-navbar>
<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_02.png" mode="scaleToFill"
class="w-[112rpx] h-[104rpx]" />
</view>
<view class="flex flex-col ml-[10rpx]">
<view class="text-[44rpx] font-500 mb-[14rpx]">预测分数</view>
<view class="text-[#B0B3B8] text-[30rpx]">请填写预估分数</view>
</view>
<view class="w-[160rpx] h-[160rpx] ml-auto">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_zk02.png" mode="scaleToFill"
class="w-[160rpx] h-[160rpx]" />
</view>
</view>
<form @submit="handleSubmit" class="flex-1 pb-safe">
<view class="flex flex-col h-full">
<view
class="flex items-center text-[30rpx] justify-between mx-[40rpx] py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid"
v-for="(val, key) of cToE" :key="key">
<view class="text-[#404142] text-left min-w-[150rpx] mr-[40rpx] ">{{ val }}</view>
<view class="flex-1">
<input type="number" input-mode="numeric" v-model="formData[key]"
:placeholder="['chinese', 'math', 'english'].includes(key) ? '满分150分请输入您的分数' : ['physics', 'chemistry'].includes(key) ? '满分100分计算90%分数' : '满分60分'"
confirm-type="done" placeholder-style="color:#C5C8D1;font-size:30rpx;text-align:left;"
class="text-left" @blur="(event) => handleNumberChange(event, key)">
</view>
</view>
<view class="text-[34rpx] mt-[40rpx] ml-[40rpx] font-700">等级考成绩</view>
<view class="grid grid-cols-2 gap-[0_50rpx] mx-[40rpx]">
<view
class="flex items-center text-[30rpx] justify-between py-[34rpx] border-b-1 border-b-[#eaeaea] border-b-solid"
v-for="(val, key) of ctoEWithDegree" :key="key">
<view class="text-[#404142] text-left mr-[34rpx] ">{{ val }}</view>
<view class="flex-1 flex items-center" @click="handleOpenPopup(key)">
<MxInput v-model:value="degreeFormData[key]" placeholder="请选择" root-class="text-left w-[92rpx]!"
:readonly="true" />
<view class="w-[18rpx] h-[36rpx] flex items-center ml-auto mr-[30rpx]">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_jiantou.png"
mode="scaleToFill" class="w-[18rpx] h-[36rpx]" />
</view>
</view>
</view>
</view>
<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>
</view>
</view>
</form>
<sar-popup :visible="visible" effect="slide-bottom" @overlay-click="onOverlayClick">
<view class="bg-white rounded-[24rpx_24rpx_0_0] px-[30rpx] pb-safe pt-[30rpx] min-h-[492rpx]">
<view class="text-[34rpx] font-500 flex items-center justify-between mb-[30rpx]">
<view>请选择{{ ctoEWithDegree[activeType] }}等级</view>
<view class="w-[36rpx] h-[36rpx] flex items-center" @click="onOverlayClick">
<image src="https://lwzk.ycymedu.com/img/tianbao/tb_guanbi.png"
mode="scaleToFill" class="w-[36rpx] h-[36rpx]" />
</view>
</view>
<MxRadio v-model:value="degreeFormData[activeType]" :options="gradeClassification" label-key="label"
value-key="label" custom-root-cols-class="grid grid-cols-3 items-center gap-[20rpx]"
custom-root-class="pb-[20rpx]"
custom-item-class="py-[12rpx] text-center border-1 border-solid border-[#F3F4F8]"
active-item-class="bg-white text-[#1580FF] border-1 border-solid border-[#1580FF]!" @change="visible = false"/>
</view>
</sar-popup>
</view>
</template>
<style lang="scss" scoped>
.custom-background {
background: linear-gradient( 177deg, #E4EDFF 0%, #F0F5FF 180rpx, #FEFEFF 360rpx);
background-position: 50% 50%;
background-origin: padding-box;
background-clip: border-box;
background-size: auto auto;
}
.submit-btn[disabled] {
background-color: #a1cbff;
color: #fff;
}
</style>