You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

938 lines
29 KiB

<template>
<view class="container safe-area-inset-bottom">
<image class="bkg" src="~@/static/me/wave.png" mode="widthFix"></image>
<zmm-watermark :column="2" :margin="30" :watermark="watermark"></zmm-watermark>
<u-notice-bar class="notice-bar" v-if="aspiration && aspiration.tip" :list="[aspiration.tip]"></u-notice-bar>
<view class="wrap" v-if="step === 1">
<view class="year-picker">
<view class="year-picker__title">报考年份</view>
<u-input class="year-picker__input"
v-model="form.year"
type="select"
:height="60"
border
border-color="#b2b2b2"
:custom-style="{
color: '#6c6f70'
}"
@click="isShowTime = true"></u-input>
</view>
<view class="user-form" v-if="false">
<view class="user-form__input">
<u-form :model="form" ref="uForm" :label-style="{ 'font-weight': '500' }" label-width="auto">
<u-form-item label="学生姓名" required prop="name">
<u-input v-model="form.name" placeholder="请输入" input-align="right" />
</u-form-item>
<u-form-item label="准考证" required prop="examination_number">
<u-input v-model="form.examination_number" placeholder="请输入" input-align="right" />
</u-form-item>
<u-form-item label="毕业学校" required prop="finish_school">
<u-input v-model="form.finish_school" placeholder="请输入" input-align="right" />
</u-form-item>
</u-form>
</view>
</view>
<view class="area-pick">
<view class="area-pick__title">所在区域</view>
<view class="area-pick__panel">
<view v-for="(group, groupId) in groupArea" :key="groupId" class="area-item" @click="form.group = groupId">
{{ groupId }}
<u-icon class="area-item__tag" v-if="form.group === groupId" name="checkmark-circle-fill" color="#fff" :size="64" />
</view>
</view>
</view>
<u-button
shape="circle"
ripple
:custom-style="{
'background-image': 'linear-gradient(263deg, rgba(31,142,247,0.9) 0%, rgba(17,100,247,0.9981153777569027) 78%, rgba(17,100,247,0.9999999999999999) 78%)',
height: '76rpx',
'line-height': '76rpx',
'margin-top': '110rpx',
'width': '450rpx',
'color': '#fff'
}"
@click="() => {
if (form.group) {
stepClick('next')
} else {
$u.toast('请选择区域')
}
}">下一步</u-button>
</view>
<view class="wrap" v-if="step > 1 && step <= (1 + batches.length)">
<view class="picked-data">
<view>{{ form.year }}年 {{ currentBatch.name || '-' }}</view>
</view>
<view class="card" v-for="item in currentBatchSub" :key="item.id">
<view class="card__title">
<view class="batch-sub__title">
{{ item.name || '-' }}
</view>
</view>
<view class="card__body">
<view class="batch-sub-school" v-for="school in item.batch_sub_schools" :key="school.id">
<view class="batch-sub-school__name">
志愿序号 {{ school.number || '-' }}
</view>
<view class="batch-sub-school__form sub-form1">
<view class="sub-form1__row sub-form1-title">
<view class="sub-form1__col1">
代码
</view>
<view class="sub-form1__col2">
学校
</view>
</view>
<view class="sub-form1__row">
<view class="sub-form1__col1">
<u-input
disabled
v-model="flatForm[`${currentBatch.id}-${item.id}-${school.id}-code`]"
:height="50"
border
border-color="#e0e0e0"
input-align="center"
:clearable="false"
@click="forSchoolName = { needSpec: (school.specialty && school.specialty.length > 0), code: `${currentBatch.id}-${item.id}-${school.id}-code`, value: `${currentBatch.id}-${item.id}-${school.id}-value` },getSchools(item.id),isShowSchoolSelect = true"></u-input>
</view>
<view class="sub-form1__col2">
<u-input
disabled
v-model="flatForm[`${currentBatch.id}-${item.id}-${school.id}-value`]"
:height="50" border border-color="#e0e0e0"
input-align="center"
:clearable="false"
@click="forSchoolName = { needSpec: (school.specialty && school.specialty.length > 0), code: `${currentBatch.id}-${item.id}-${school.id}-code`, value: `${currentBatch.id}-${item.id}-${school.id}-value` },getSchools(item.id),isShowSchoolSelect = true"></u-input>
</view>
</view>
</view>
<view class="batch-sub-school-specialty sub-form2" v-if="school.specialty && school.specialty.length > 0">
<view class="sub-form2__row sub-form2-title">
<view class="sub-form2__col1">
序号
</view>
<view class="sub-form2__col2">
代码
</view>
<view class="sub-form2__col3">
专业
</view>
</view>
<view class="sub-form2__row" v-for="(spec, specIndex) in school.specialty" :key="spec.number">
<view class="sub-form2__col1">
{{ spec.number || '-' }}
</view>
<view class="sub-form2__col2">
<u-input
disabled
v-model="flatForm[`${currentBatch.id}-${item.id}-${school.id}-${specIndex}-code`]"
:height="50"
border
border-color="#e0e0e0"
input-align="center"
:clearable="false"
@click="forSpecName = { code: `${currentBatch.id}-${item.id}-${school.id}-${specIndex}-code`, value: `${currentBatch.id}-${item.id}-${school.id}-${specIndex}-value` },isShowSpecSelect = true"></u-input>
</view>
<view class="sub-form2__col3">
<u-input
disabled
v-model="flatForm[`${currentBatch.id}-${item.id}-${school.id}-${specIndex}-value`]"
:height="50"
border
border-color="#e0e0e0"
input-align="center"
:clearable="false"
@click="forSpecName = { code: `${currentBatch.id}-${item.id}-${school.id}-${specIndex}-code`, value: `${currentBatch.id}-${item.id}-${school.id}-${specIndex}-value` },isShowSpecSelect = true"></u-input>
</view>
</view>
</view>
<view class="batch-sub-is-obey" v-if="item.show_specialty_obey">
<view>
其他专业是否服从
</view>
<u-radio-group v-model="flatForm[`${currentBatch.id}-${item.id}-specialty`]">
<u-radio name="1">是</u-radio>
<u-radio name="0">否</u-radio>
</u-radio-group>
</view>
</view>
<view class="batch-sub-is-obey" v-if="item.show_school_obey">
<view>
其他院校是否服从
</view>
<u-radio-group v-model="flatForm[`${currentBatch.id}-${item.id}-school`]">
<u-radio name="1">是</u-radio>
<u-radio name="0">否</u-radio>
</u-radio-group>
</view>
</view>
</view>
<view class="btns">
<u-button
shape="circle"
ripple
:custom-style="{
'background-image': 'linear-gradient(263deg, rgba(31,142,247,0.9) 0%, rgba(17,100,247,0.9981153777569027) 78%, rgba(17,100,247,0.9999999999999999) 78%)',
height: '76rpx',
'line-height': '76rpx',
'margin-top': '110rpx',
'width': '290rpx',
'color': '#fff'
}"
@click="stepClick('prev')">上一步</u-button>
<template v-if="step <= (batches.length)">
<u-button
shape="circle"
ripple
:custom-style="{
'background-image': 'linear-gradient(263deg, rgba(31,142,247,0.9) 0%, rgba(17,100,247,0.9981153777569027) 78%, rgba(17,100,247,0.9999999999999999) 78%)',
height: '76rpx',
'line-height': '76rpx',
'margin-top': '110rpx',
'width': '290rpx',
'color': '#fff',
'margin-left': '64rpx'
}"
@click="stepClick('next')">下一步</u-button>
</template>
<template v-else>
<u-button
shape="circle"
ripple
:custom-style="{
'background-image': 'linear-gradient(263deg, rgba(31,142,247,0.9) 0%, rgba(17,100,247,0.9981153777569027) 78%, rgba(17,100,247,0.9999999999999999) 78%)',
height: '76rpx',
'line-height': '76rpx',
'margin-top': '110rpx',
'width': '290rpx',
'color': '#fff',
'margin-left': '64rpx'
}"
@click="isShowModal = true">提交</u-button>
</template>
</view>
</view>
<u-picker
v-model="isShowTime"
mode="time"
:params="{
year: true,
month: false,
day: false,
hour: false,
minute: false,
second: false
}"
@confirm="e => form.year = e.year"></u-picker>
<u-modal v-model="isShowWhite" content="您暂时没有填报权限" @confirm="$u.route({ type: 'back' })"></u-modal>
<u-modal v-model="isShowModal" content="确认提交数据?" show-cancel-button @confirm="submit"></u-modal>
<!-- <u-select v-model="isShowSchoolSelect" mode="mutil-column-auto" :list="schoolList" @confirm="schoolListConfirm" @cancel="schoolListCancel"></u-select>-->
<u-select v-model="isShowSchoolSelect" :list="schoolList" @confirm="schoolListConfirm" @cancel="schoolListCancel"></u-select>
<u-select v-model="isShowSpecSelect" :list="specList" @confirm="specListConfirm" @cancel="specListCancel"></u-select>
</view>
</template>
<script>
import zmmWatermark from '@/uni_modules/zmm-watermark/components/zmm-watermark/zmm-watermark.vue';
import imglogo from '@/static/waterlogo.png';
export default {
components:{
zmmWatermark
},
data() {
return {
watermark:`<img style="width:60px" src="${imglogo}" />`,
isShowWhite: false,
isShowModal: false,
step: 1,
isShowTime: false,
areaList: [],
groupArea: {},
forSchoolName: {
code: '',
value: '',
needSpec: false,
},
isShowSchoolSelect: false,
schoolList: [],
schoolMap: new Map(),
isShowSpecSelect: false,
forSpecName: {
code: '',
value: '',
},
specList: [],
form: {
name: "",
finish_school: "",
examination_number: "",
group: "",
area_id: "",
year: new Date().getFullYear().toString(),
aspiration_id: ""
},
config: null,
currentBatchId: "",
aspiration: {},
batchSub: {},
subForm: [],
flatForm: {},
};
},
methods: {
specListCancel() {
if (this.forSpecName.code) {
this.flatForm[this.forSpecName.code] = ''
}
if (this.forSpecName.value) {
this.flatForm[this.forSpecName.value] = ''
}
},
specListConfirm(e) {
const { label, value, extra } = e[0]
if (this.forSpecName.code) {
this.flatForm[this.forSpecName.code] = value
}
if (this.forSpecName.value) {
this.flatForm[this.forSpecName.value] = label
}
},
schoolListCancel() {
if (this.forSchoolName.code) {
this.flatForm[this.forSchoolName.code] = ""
}
if (this.forSchoolName.value) {
this.flatForm[this.forSchoolName.value] = ""
}
this.forSchoolName.needSpec = false
},
schoolListConfirm(e) {
console.log(e)
if (e[0]) {
const { label, value, extra } = e[0]
const findSameSchoolName = Object.entries(this.flatForm).filter(([key, val]) => val === label)
let flag = false
const comparePrefix = (str1, str2) => {
const parts1 = str1.split('-');
const parts2 = str2.split('-');
return parts1[0] === parts2[0] && parts1[1] === parts2[1];
}
findSameSchoolName.forEach(([key, value]) => {
if (comparePrefix(key, this.forSchoolName.value)) {
flag = true
}
})
if (flag) {
this.$u.toast("选择学校重复")
return
}
if (this.forSchoolName.code) {
this.flatForm[this.forSchoolName.code] = value
}
if (this.forSchoolName.value) {
this.flatForm[this.forSchoolName.value] = label
}
if (this.forSchoolName.needSpec) {
this.getSpecialties(extra)
}
}
},
async getSpecialties(school_id) {
try {
const { list } = await this.$u.api.specialtyList({
page: 1,
page_size: 9999,
school_id
})
this.specList = list.map(i => ({ label: i.name, value: i.code, extra: i.id }))
} catch (err) {
console.error(err)
}
},
async getSchools(batchSubId) {
try {
this.schoolList = this.schoolMap.get(batchSubId)?.map(school => ({
value: school.code,
label: school.name,
extra: school.id
})) || []
// const { list } = await this.$u.api.schoolList({
// page: 1,
// page_size: 9999,
// group: this.aspiration.group
// })
// this.schoolList = list.data.map(school => ({
// value: school.code,
// label: school.name,
// extra: school.id
// }))
// this.schoolList = this.areaList.map(area => ({
// id: area.id,
// value: area.id,
// label: area.name,
// children: list.data.filter(school => school.area_id === area.id)?.map(i => ({
// value: i.code,
// label: i.name,
// extra: i.id
// }))
// }))
} catch (err) {
console.error(err)
}
},
async getBatchSub(batchId) {
if (!this.subForm.find(i => i.batchId === batchId)) {
this.subForm.push({
batchId,
name: this.batches.find(j => j.id === batchId)?.name,
batchSubs: []
})
}
if (this.batchSub.hasOwnProperty(batchId) && this.batchSub[batchId]) {
} else {
try {
const { batchSubs } = await this.$u.api.batchDetail({ id: batchId })
this.batchSub[batchId] = batchSubs
batchSubs.forEach(batchSub => {
this.schoolMap.set(batchSub.id, batchSub.school)
})
const formBatch = this.subForm.find(i => i.batchId === batchId)
formBatch.batchSubs = batchSubs.map(resSub => ({
batchSubId: resSub.id,
name: resSub.name,
batchSubSchools: resSub.batch_sub_schools.map(subSchool => ({
batchSubSchoolId: subSchool.id,
name: subSchool.number,
code: "",
value: "",
specialties: subSchool.specialty?.map((spec, specIndex) => ({
specialtyId: specIndex,
name: spec.number,
code: "",
value: ""
}))
})),
[resSub.show_specialty_obey ? 'specialtyObey' : 'notShowSpecialtyObey']: "1",
[resSub.show_school_obey ? 'schoolObey' : 'notShowSchoolObey']: "1"
}))
} catch (err) {
console.error(err)
}
}
this.currentBatchId = batchId
const resolveData = (batch) => {
const myBatchId = batch.batchId
if (batch.batchSubs && batch.batchSubs.length > 0) {
batch.batchSubs.forEach(batchSub => {
const myBatchSubId = batchSub.batchSubId
if (!this.flatForm.hasOwnProperty(`${myBatchId}-${myBatchSubId}-specialty`)) {
this.flatForm[`${myBatchId}-${myBatchSubId}-specialty`] = "1"
}
if (!this.flatForm.hasOwnProperty(`${myBatchId}-${myBatchSubId}-school`)) {
this.flatForm[`${myBatchId}-${myBatchSubId}-school`] = "1"
}
if (batchSub.batchSubSchools && batchSub.batchSubSchools.length > 0) {
batchSub.batchSubSchools.forEach(batchSubSchool => {
const myBatchSubSchoolId = batchSubSchool.batchSubSchoolId
if (!this.flatForm.hasOwnProperty(`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-value`)) {
this.flatForm[`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-value`] = ''
}
if (!this.flatForm.hasOwnProperty(`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-code`)) {
this.flatForm[`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-code`] = ''
}
if (batchSubSchool.specialties && batchSubSchool.specialties.length > 0) {
batchSubSchool.specialties.forEach(specialty => {
const mySpecialtyId = specialty.specialtyId
if (!this.flatForm.hasOwnProperty(`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-${mySpecialtyId}-value`)) {
this.flatForm[`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-${mySpecialtyId}-value`] = ''
}
if (!this.flatForm.hasOwnProperty(`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-${mySpecialtyId}-code`)) {
this.flatForm[`${myBatchId}-${myBatchSubId}-${myBatchSubSchoolId}-${mySpecialtyId}-code`] = ''
}
})
}
})
}
})
}
}
this.subForm.forEach(batch => resolveData(batch))
},
async getConfig () {
try {
const { list } = await this.$u.api.batchIndex({
group: this.form.group,
year: this.form.year
})
if (list.length > 0) {
this.form.aspiration_id = list[0].id
this.aspiration = list[0]
if (this.aspiration.image_id && this.aspiration.image) {
this.$u.route({
url: '/package_sub/pages/LoadImage/LoadImage',
params: {
src: this.aspiration.image.url
}
})
return
}
this.setTitle()
} else {
this.$u.toast("暂未获取到当年模版")
return 1
}
} catch (err) {
console.error(err)
}
},
async stepClick(type='next') {
if (type === 'next') {
let notConfig
if (this.step === 1 && !this.config) {
notConfig = await this.getConfig()
// await this.getSchools()
}
if (this.step < (1 + this.batches.length) && !notConfig) {
this.step = this.step + 1
}
} else if (type === 'prev') {
if (this.step === 1) {
this.form.group = ''
this.aspiration = null
this.config = null
}
else if (this.step > 1) {
this.step = this.step - 1
}
}
if (this.step > 1) {
await this.getBatchSub(this.batches[this.step-2]?.id)
}
},
setTitle() {
uni.setNavigationBarTitle({
title: `志愿模拟填报 - Step ${this.step}${ this.step !== 1 ? ('/'+(this.batches.length+1)) : '' }`
})
},
async getArea() {
try {
const res = await this.$u.api.area()
this.areaList = res.list
this.groupArea = res.list?.filter(i => i.group)?.reduce((acc, item) => {
const key = item.group;
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(item);
return acc;
}, {})
} catch (err) {
console.error(err)
}
},
submit() {
const idName = ['batchId', 'batchSubId', 'batchSubSchoolId', 'specialtyId'];
const linkName = ['batchSubs', 'batchSubSchools', 'specialties'];
const updateTargetProperty = (target, key, property) => {
if (target && target.hasOwnProperty(property)) {
target[property] = this.flatForm[key];
}
};
for (const key in this.flatForm) {
let target = null;
const keys = key.split('-');
keys.forEach((val, i) => {
if (i === 2) {
if (/school$/.test(key)) {
updateTargetProperty(target, key, 'schoolObey');
} else if (/specialty$/.test(key)) {
updateTargetProperty(target, key, 'specialtyObey');
}
}
if (isNaN(Number(val))) {
if (i === 3 || i === 4) {
if (val === 'code' || val === 'value') {
updateTargetProperty(target, key, val);
}
}
} else {
target = (target && target[linkName[i - 1]])
? target[linkName[i - 1]].find(j => j[idName[i]] === Number(val))
: this.subForm.find(j => j[idName[i]] === Number(val));
}
});
}
this.$u.api.batchSubmit({
aspiration_id: this.aspiration.id,
data: this.subForm,
name: this.form.name,
finish_school: this.form.finish_school,
examination_number: this.form.examination_number,
}).then(_ => {
this.$u.route({
url: '/package_sub/pages/FormSuccess/FormSuccess',
params: {
title: "志愿填报",
redirect: '/pages/list/list',
type: 'switchTab'
}
});
});
}
},
computed: {
formArea() {
return this.areaList?.find(i => i.id === this.form.area_id)?.name
},
batches() {
return this.aspiration.batchs || []
},
currentBatchSub() {
return this.batchSub[this.currentBatchId]
},
currentBatch() {
return this.batches.find(i => i.id === this.currentBatchId) ?? {}
}
},
watch: {
step() {
this.setTitle()
}
},
onShow() {
this.setTitle()
if (!this.vuex_user.white) {
this.isShowWhite = true
}
},
created() {
this.getArea().then(_ => {
// this.getSchools()
})
},
}
</script>
<style lang="scss">
.container {
position: relative;
min-height: 100vh;
width: 100vw;
background: #eaf8fe;
.notice-bar {
position: sticky;
top: 0;
left: 0;
right: 0;
z-index: 5;
}
.bkg {
width: 100vw;
position: fixed;
top: 0;
left: 0;
}
.wrap {
z-index: 3;
position: relative;
padding-top: 40rpx;
.year-picker {
background: #fff;
display: flex;
align-items: center;
margin: 0 24rpx;
padding: 32rpx 75rpx 32rpx 60rpx;
border-radius: 20rpx;
filter: drop-shadow(-2.179rpx 3.355rpx 2.5rpx rgba(208, 209, 209, 0.3));
&__title {
font-size: 30rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
}
&__input {
flex: 1;
margin-left: 32rpx;
}
}
.user-form {
background: #fff;
display: flex;
align-items: center;
margin: 40rpx 24rpx 0;
padding: 32rpx 75rpx 32rpx 46rpx;
border-radius: 20rpx;
filter: drop-shadow(-2.179rpx 3.355rpx 2.5rpx rgba(208, 209, 209, 0.3));
&__title {
font-size: 30rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
}
&__input {
flex: 1;
margin-left: 32rpx;
}
}
.area-pick {
margin: 0 24rpx;
&__title {
font-size: 30rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
padding: 42rpx 0 38rpx 60rpx;
}
&__panel {
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-gap: 22rpx 28rpx;
$colors: linear-gradient(0deg, #309cfe 0%, #58e5ff 100%),
linear-gradient(0deg, #309cfe 0%, #58e5ff 100%),
linear-gradient(0deg, #2f69fd 0%, #51bcfe 100%),
linear-gradient(0deg, #2f69fd 0%, #51bcfe 100%),
linear-gradient(0deg, #2941fc 0%, #587bff 100%),
linear-gradient(0deg, #2941fc 0%, #587bff 100%),
linear-gradient(0deg, #280bb7 0%, #5776fe 100%),
linear-gradient(0deg, #280bb7 0%, #5776fe 100%);
.area-item {
border-radius: 15rpx;
font-size: 46rpx;
text-transform: uppercase;
color: #ffffff;
font-weight: 500;
text-align: center;
padding: 60rpx 0;
filter: drop-shadow(0 4rpx 2rpx rgba(0, 0, 0, 0.3));
position: relative;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
&::before {
content: '';
opacity: 0.302;
width: 192rpx;
height: 192rpx;
border-radius: 96rpx;
background-image: linear-gradient(0deg, #309cfe 0%, #58c2ff 100%);
position: absolute;
top: -140rpx;
right: -38rpx;
}
&::after {
content: '';
opacity: 0.149;
width: 192rpx;
height: 192rpx;
border-radius: 96rpx;
background-color: #b9e1fd;
position: absolute;
bottom: -148rpx;
left: -44rpx;
}
&__tag {
z-index: 4;
position: absolute;
top: 10rpx;
right: 10rpx;
}
}
@for $i from 1 through length($colors) {
.area-item:nth-child(n + #{$i}) {
background: nth($colors, $i);
}
}
}
}
.picked-data {
border-radius: 20rpx;
filter: drop-shadow(-2.179rpx 3.355rpx 2.5rpx rgba(208,209,209,0.3));
background-color: rgba(255, 255, 255, 0.5);
margin: 20rpx 24rpx 0;
padding: 26rpx;
& > view {
word-break: break-word;
flex: 1;
text-align: center;
font-size: 32rpx;
text-transform: uppercase;
color: #333333;
font-weight: bold;
// white-space: nowrap;
}
& > view + view {
margin-left: 10rpx;
}
}
.card {
margin: 28rpx 24rpx 0;
border-radius: 20rpx;
filter: drop-shadow(-2.179rpx 3.355rpx 2.5rpx rgba(208,209,209,0.3));
background-color: #ffffff;
&__title {
background: #fbf1e8;
border-radius: 20rpx 20rpx 0 0;
padding: 0 16rpx;
}
&__body {
padding: 48rpx 30rpx 70rpx 30rpx;
}
}
.batch-sub {
&__title {
text-align: center;
font-size: 28rpx;
text-transform: uppercase;
color: #e77817;
font-weight: 500;
padding: 30rpx 20rpx;
}
&-is-obey {
display: flex;
align-items: center;
margin-top: 40rpx;
& > view:nth-child(1) {
font-size: 24rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
margin-right: 110rpx;
}
}
}
}
}
.btns {
display: flex;
align-items: center;
justify-content: center;
}
.batch-sub-school {
margin-top: 40rpx;
&:nth-child(1) {
margin-top: 0;
}
&__name {
font-size: 28rpx;
line-height: 36rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
}
.sub-form1 {
&-title {
font-size: 24rpx;
line-height: 36rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
margin: 28rpx 0;
text-align: center;
}
&__row {
display: flex;
align-items: center;
justify-content: space-between;
}
&__col1 {
flex-basis: 29%;
}
&__col2 {
flex-basis: 67.5%;
}
}
.sub-form2 {
&-title {
font-size: 24rpx;
line-height: 36rpx;
text-transform: uppercase;
color: #333333;
font-weight: 500;
margin: 28rpx 0;
text-align: center;
}
&__row {
display: flex;
align-items: center;
justify-content: space-between;
}
&__col1 {
flex-basis: 14.8%;
font-size: 28rpx;
text-transform: uppercase;
color: #333333;
text-align: center;
}
&__col2 {
flex-basis: 29%;
}
&__col3 {
flex-basis: 48.9%;
}
}
.sub-form2__row + .sub-form2__row {
margin-top: 22rpx;
}
}
</style>