|
@@ -1,864 +1,233 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <main class="registration-page">
|
|
|
|
|
- <van-nav-bar
|
|
|
|
|
- title="医药代表合规培训报名表"
|
|
|
|
|
- left-arrow
|
|
|
|
|
- safe-area-inset-top
|
|
|
|
|
- @click-left="goBack"
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
- <header class="registration-hero">
|
|
|
|
|
- <h1>正式报名 · 一次填完</h1>
|
|
|
|
|
- <p>信息仅用于学籍注册与证书制作</p>
|
|
|
|
|
- <ol class="registration-steps" aria-label="报名流程">
|
|
|
|
|
- <li
|
|
|
|
|
- v-for="(step, index) in steps"
|
|
|
|
|
- :key="step"
|
|
|
|
|
- :class="{ 'step-active': index === 0 }"
|
|
|
|
|
- :aria-current="index === 0 ? 'step' : undefined"
|
|
|
|
|
- >
|
|
|
|
|
- <span class="step-number">{{ index + 1 }}</span>
|
|
|
|
|
- <span>{{ step }}</span>
|
|
|
|
|
- </li>
|
|
|
|
|
- </ol>
|
|
|
|
|
- </header>
|
|
|
|
|
-
|
|
|
|
|
- <div class="registration-content">
|
|
|
|
|
- <aside class="preparation-note">
|
|
|
|
|
- <h2><span aria-hidden="true">📋</span> 填写前请备齐</h2>
|
|
|
|
|
- <p>两寸免冠证件照1~2张(白底或蓝底,用于证书制作)。</p>
|
|
|
|
|
- </aside>
|
|
|
|
|
-
|
|
|
|
|
- <van-form
|
|
|
|
|
- ref="registrationForm"
|
|
|
|
|
- class="registration-form"
|
|
|
|
|
- label-align="top"
|
|
|
|
|
- validate-trigger="onSubmit"
|
|
|
|
|
- scroll-to-error
|
|
|
|
|
- :show-error="false"
|
|
|
|
|
- @submit="onSubmit"
|
|
|
|
|
- >
|
|
|
|
|
- <section aria-labelledby="basic-title">
|
|
|
|
|
- <h2 id="basic-title" class="section-title">一、基本信息</h2>
|
|
|
|
|
- <div class="section-card basic-card">
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-name"
|
|
|
|
|
- v-model="form.name"
|
|
|
|
|
- name="name"
|
|
|
|
|
- label="姓名"
|
|
|
|
|
- placeholder="请输入真实姓名(用于证书印制)"
|
|
|
|
|
- autocomplete="name"
|
|
|
|
|
- maxlength="50"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="registrationRules.name"
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-gender"
|
|
|
|
|
- name="gender"
|
|
|
|
|
- label="性别"
|
|
|
|
|
- class="choice-field"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="registrationRules.gender"
|
|
|
|
|
- >
|
|
|
|
|
- <template #input>
|
|
|
|
|
- <van-radio-group v-model="form.gender" direction="horizontal" aria-label="性别">
|
|
|
|
|
- <van-radio
|
|
|
|
|
- name="男"
|
|
|
|
|
- aria-label="男"
|
|
|
|
|
- class="gender-pill"
|
|
|
|
|
- :class="{ selected: form.gender === '男' }"
|
|
|
|
|
- >
|
|
|
|
|
- 男
|
|
|
|
|
- </van-radio>
|
|
|
|
|
- <van-radio
|
|
|
|
|
- name="女"
|
|
|
|
|
- aria-label="女"
|
|
|
|
|
- class="gender-pill"
|
|
|
|
|
- :class="{ selected: form.gender === '女' }"
|
|
|
|
|
- >
|
|
|
|
|
- 女
|
|
|
|
|
- </van-radio>
|
|
|
|
|
- </van-radio-group>
|
|
|
|
|
- </template>
|
|
|
|
|
- </van-field>
|
|
|
|
|
-
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-phone"
|
|
|
|
|
- v-model="form.phone"
|
|
|
|
|
- name="phone"
|
|
|
|
|
- label="手机号"
|
|
|
|
|
- type="tel"
|
|
|
|
|
- inputmode="numeric"
|
|
|
|
|
- autocomplete="tel"
|
|
|
|
|
- maxlength="11"
|
|
|
|
|
- placeholder="请输入手机号"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :formatter="formatPhone"
|
|
|
|
|
- :rules="registrationRules.phone"
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-id-number"
|
|
|
|
|
- v-model="form.idNumber"
|
|
|
|
|
- name="idNumber"
|
|
|
|
|
- label="身份证号"
|
|
|
|
|
- maxlength="18"
|
|
|
|
|
- placeholder="请输入身份证号(用于学籍与证书注册)"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :formatter="formatIdNumber"
|
|
|
|
|
- :rules="registrationRules.idNumber"
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-region"
|
|
|
|
|
- :model-value="form.region.text"
|
|
|
|
|
- name="region"
|
|
|
|
|
- label="所在地区(省/市)"
|
|
|
|
|
- class="picker-field"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="[{ required: true, message: '请选择所在省/市' }]"
|
|
|
|
|
- >
|
|
|
|
|
- <template #input>
|
|
|
|
|
- <button
|
|
|
|
|
- type="button"
|
|
|
|
|
- class="region-trigger"
|
|
|
|
|
- :class="{ 'is-placeholder': !form.region.text }"
|
|
|
|
|
- aria-label="所在地区(省/市)"
|
|
|
|
|
- aria-haspopup="dialog"
|
|
|
|
|
- :aria-expanded="showRegionPicker"
|
|
|
|
|
- @click="openRegionPicker"
|
|
|
|
|
- >
|
|
|
|
|
- <span>{{ form.region.text || '请选择省 / 市' }}</span>
|
|
|
|
|
- <van-icon name="arrow-down" aria-hidden="true" />
|
|
|
|
|
- </button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </van-field>
|
|
|
|
|
-
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-company"
|
|
|
|
|
- v-model="form.company"
|
|
|
|
|
- name="company"
|
|
|
|
|
- label="所属公司 / 单位 / 机构"
|
|
|
|
|
- placeholder="请输入单位全称"
|
|
|
|
|
- autocomplete="organization"
|
|
|
|
|
- maxlength="100"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="registrationRules.company"
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-position"
|
|
|
|
|
- v-model="form.position"
|
|
|
|
|
- name="position"
|
|
|
|
|
- label="职务"
|
|
|
|
|
- placeholder="请输入职务"
|
|
|
|
|
- autocomplete="organization-title"
|
|
|
|
|
- maxlength="50"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="registrationRules.position"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- </section>
|
|
|
|
|
-
|
|
|
|
|
- <section aria-labelledby="education-title">
|
|
|
|
|
- <h2 id="education-title" class="section-title">二、学历报名</h2>
|
|
|
|
|
- <div class="section-card education-card">
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-education"
|
|
|
|
|
- name="education"
|
|
|
|
|
- label="是否需要同步报名学历"
|
|
|
|
|
- class="choice-field education-field"
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="registrationRules.education"
|
|
|
|
|
- >
|
|
|
|
|
- <template #label>
|
|
|
|
|
- <span id="registration-education-label">
|
|
|
|
|
- 是否需要同步报名学历<span class="required-mark">*</span>
|
|
|
|
|
- </span>
|
|
|
|
|
- </template>
|
|
|
|
|
- <template #input>
|
|
|
|
|
- <div class="education-content">
|
|
|
|
|
- <van-checkbox-group
|
|
|
|
|
- v-model="form.education"
|
|
|
|
|
- class="education-options"
|
|
|
|
|
- aria-labelledby="registration-education-label"
|
|
|
|
|
- >
|
|
|
|
|
- <van-checkbox
|
|
|
|
|
- v-for="option in educationOptions"
|
|
|
|
|
- :key="option"
|
|
|
|
|
- :name="option"
|
|
|
|
|
- class="education-pill"
|
|
|
|
|
- :class="{ selected: form.education.includes(option) }"
|
|
|
|
|
- >
|
|
|
|
|
- {{ option }}
|
|
|
|
|
- </van-checkbox>
|
|
|
|
|
- </van-checkbox-group>
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </van-field>
|
|
|
|
|
- </div>
|
|
|
|
|
- </section>
|
|
|
|
|
-
|
|
|
|
|
- <section aria-labelledby="photo-title">
|
|
|
|
|
- <h2 id="photo-title" class="section-title">三、照片(证书使用)</h2>
|
|
|
|
|
- <div class="section-card">
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-photo"
|
|
|
|
|
- name="photo"
|
|
|
|
|
- label="照片(证书使用)"
|
|
|
|
|
- class="choice-field photo-field"
|
|
|
|
|
- required
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="registrationRules.photo"
|
|
|
|
|
- >
|
|
|
|
|
- <template #input>
|
|
|
|
|
- <div class="photo-content">
|
|
|
|
|
- <p class="field-note">白底或蓝底两寸免冠照片</p>
|
|
|
|
|
- <van-uploader
|
|
|
|
|
- v-model="photos"
|
|
|
|
|
- class="certificate-uploader"
|
|
|
|
|
- accept="image/*"
|
|
|
|
|
- multiple
|
|
|
|
|
- result-type="file"
|
|
|
|
|
- image-fit="contain"
|
|
|
|
|
- :preview-options="{ closeable: true }"
|
|
|
|
|
- :max-count="2"
|
|
|
|
|
- :before-read="beforeReadPhoto"
|
|
|
|
|
- aria-label="添加证书照片"
|
|
|
|
|
- >
|
|
|
|
|
- <div class="upload-placeholder">
|
|
|
|
|
- <span class="upload-plus"><van-icon name="plus" /></span>
|
|
|
|
|
- <span class="upload-label">添加图片</span>
|
|
|
|
|
- <span class="field-note">图片要求:最少 1 张,最多 2 张</span>
|
|
|
|
|
- </div>
|
|
|
|
|
- </van-uploader>
|
|
|
|
|
- </div>
|
|
|
|
|
- </template>
|
|
|
|
|
- </van-field>
|
|
|
|
|
- </div>
|
|
|
|
|
- </section>
|
|
|
|
|
-
|
|
|
|
|
- <section aria-labelledby="mailing-title">
|
|
|
|
|
- <h2 id="mailing-title" class="section-title">四、证书寄送</h2>
|
|
|
|
|
- <div class="section-card mailing-card">
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-mailing"
|
|
|
|
|
- :model-value="form.mailingArea.text"
|
|
|
|
|
- name="mailingArea"
|
|
|
|
|
- label="联系地址"
|
|
|
|
|
- class="picker-field"
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="[{ required: true, message: '请选择证书寄送省/市/区' }]"
|
|
|
|
|
- >
|
|
|
|
|
- <template #label>
|
|
|
|
|
- <span id="registration-mailing-label">
|
|
|
|
|
- 联系地址<span class="required-mark">*</span>
|
|
|
|
|
- <span class="field-hint">用于寄送证书</span>
|
|
|
|
|
- </span>
|
|
|
|
|
- </template>
|
|
|
|
|
- <template #input>
|
|
|
|
|
- <button
|
|
|
|
|
- type="button"
|
|
|
|
|
- class="region-trigger"
|
|
|
|
|
- :class="{ 'is-placeholder': !form.mailingArea.text }"
|
|
|
|
|
- aria-labelledby="registration-mailing-label"
|
|
|
|
|
- aria-haspopup="dialog"
|
|
|
|
|
- :aria-expanded="showMailingPicker"
|
|
|
|
|
- @click="openMailingPicker"
|
|
|
|
|
- >
|
|
|
|
|
- <span>{{ form.mailingArea.text || '省 / 市 / 区' }}</span>
|
|
|
|
|
- <van-icon name="arrow-down" aria-hidden="true" />
|
|
|
|
|
- </button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </van-field>
|
|
|
|
|
- <van-field
|
|
|
|
|
- id="registration-address"
|
|
|
|
|
- v-model="form.address"
|
|
|
|
|
- name="address"
|
|
|
|
|
- label="详细地址"
|
|
|
|
|
- label-class="address-label"
|
|
|
|
|
- placeholder="请填写详细地址(小区/楼栋/门牌号)"
|
|
|
|
|
- autocomplete="street-address"
|
|
|
|
|
- maxlength="100"
|
|
|
|
|
- :border="false"
|
|
|
|
|
- :rules="registrationRules.address"
|
|
|
|
|
- />
|
|
|
|
|
- </div>
|
|
|
|
|
- </section>
|
|
|
|
|
-
|
|
|
|
|
- <van-button class="submit-button" type="primary" native-type="submit" round block>
|
|
|
|
|
- 提交报名
|
|
|
|
|
- </van-button>
|
|
|
|
|
- <footer class="privacy-note">
|
|
|
|
|
- <p>教务老师将于 1 个工作日内与你确认报名信息并开通课程</p>
|
|
|
|
|
- <p>信息仅用于学籍注册与证书制作,不会用于其他用途</p>
|
|
|
|
|
- </footer>
|
|
|
|
|
- </van-form>
|
|
|
|
|
- </div>
|
|
|
|
|
-
|
|
|
|
|
- <van-popup v-model:show="showRegionPicker" position="bottom" round safe-area-inset-bottom>
|
|
|
|
|
- <van-cascader
|
|
|
|
|
- v-model="regionDraft"
|
|
|
|
|
- title="请选择所在省 / 市"
|
|
|
|
|
- :options="provinceCityOptions"
|
|
|
|
|
- @close="showRegionPicker = false"
|
|
|
|
|
- @finish="confirmRegion"
|
|
|
|
|
- />
|
|
|
|
|
- </van-popup>
|
|
|
|
|
- <van-popup v-model:show="showMailingPicker" position="bottom" round safe-area-inset-bottom>
|
|
|
|
|
- <van-cascader
|
|
|
|
|
- v-model="mailingDraft"
|
|
|
|
|
- title="请选择省 / 市 / 区"
|
|
|
|
|
- :options="provinceCityCountyOptions"
|
|
|
|
|
- @close="showMailingPicker = false"
|
|
|
|
|
- @finish="confirmMailingArea"
|
|
|
|
|
- />
|
|
|
|
|
- </van-popup>
|
|
|
|
|
|
|
+ <main class="redirect-page">
|
|
|
|
|
+ <div class="glow glow-top" aria-hidden="true"></div>
|
|
|
|
|
+ <div class="glow glow-bottom" aria-hidden="true"></div>
|
|
|
|
|
+
|
|
|
|
|
+ <section class="redirect-card" aria-labelledby="redirect-title" aria-live="polite">
|
|
|
|
|
+ <div class="icon-wrap" aria-hidden="true">
|
|
|
|
|
+ <van-icon name="records-o" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <h1 id="redirect-title">正在前往培训报名页面</h1>
|
|
|
|
|
+ <p class="description">报名页面即将打开,请稍候</p>
|
|
|
|
|
+
|
|
|
|
|
+ <div class="loading-status">
|
|
|
|
|
+ <van-loading type="spinner" size="18px" color="#1677ff" />
|
|
|
|
|
+ <span>正在安全跳转...</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+
|
|
|
|
|
+ <button type="button" class="redirect-button" @click="redirectToRegistration">
|
|
|
|
|
+ 立即前往
|
|
|
|
|
+ <van-icon name="arrow" />
|
|
|
|
|
+ </button>
|
|
|
|
|
+
|
|
|
|
|
+ <p class="fallback-tip">若未自动跳转,请点击上方按钮</p>
|
|
|
|
|
+ </section>
|
|
|
|
|
+
|
|
|
|
|
+ <footer class="page-footer">
|
|
|
|
|
+ <van-icon name="shield-o" aria-hidden="true" />
|
|
|
|
|
+ <span>安全跳转 · 请放心访问</span>
|
|
|
|
|
+ </footer>
|
|
|
</main>
|
|
</main>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
-import { reactive, ref } from 'vue'
|
|
|
|
|
-import { useRouter } from 'vue-router'
|
|
|
|
|
-import { showDialog, showToast } from 'vant'
|
|
|
|
|
-import type { CascaderOption, FormInstance, UploaderFileListItem } from 'vant'
|
|
|
|
|
-import { useCascaderAreaData } from '@vant/area-data'
|
|
|
|
|
-import { registrationRules } from './validation'
|
|
|
|
|
-
|
|
|
|
|
-interface AreaSelection {
|
|
|
|
|
- value: string
|
|
|
|
|
- text: string
|
|
|
|
|
-}
|
|
|
|
|
|
|
+import { onBeforeUnmount, onMounted } from 'vue'
|
|
|
|
|
|
|
|
-interface CascaderFinishEvent {
|
|
|
|
|
- value: string | number
|
|
|
|
|
- selectedOptions: CascaderOption[]
|
|
|
|
|
-}
|
|
|
|
|
|
|
+const REGISTRATION_URL = 'https://preapi.yaoyi.net/h5/#/pages/artile//training-registration'
|
|
|
|
|
+const REDIRECT_DELAY = 1000
|
|
|
|
|
|
|
|
-const router = useRouter()
|
|
|
|
|
-const registrationForm = ref<FormInstance>()
|
|
|
|
|
-const provinceCityCountyOptions = useCascaderAreaData()
|
|
|
|
|
-const provinceCityOptions = provinceCityCountyOptions.map((province) => ({
|
|
|
|
|
- text: province.text,
|
|
|
|
|
- value: province.value,
|
|
|
|
|
- children: province.children?.map((city) => ({ text: city.text, value: city.value })),
|
|
|
|
|
-}))
|
|
|
|
|
-const steps = ['填写提交', '教务审核', '开通课程', '双证上岗']
|
|
|
|
|
-const educationOptions = ['【专科】药学专业、护理学专业', '【专科起点本科】药学专业、护理学专业']
|
|
|
|
|
-const form = reactive({
|
|
|
|
|
- name: '',
|
|
|
|
|
- gender: '' as '男' | '女' | '',
|
|
|
|
|
- phone: '',
|
|
|
|
|
- idNumber: '',
|
|
|
|
|
- region: { value: '', text: '' } as AreaSelection,
|
|
|
|
|
- company: '',
|
|
|
|
|
- position: '',
|
|
|
|
|
- education: [] as string[],
|
|
|
|
|
- mailingArea: { value: '', text: '' } as AreaSelection,
|
|
|
|
|
- address: '',
|
|
|
|
|
-})
|
|
|
|
|
-const photos = ref<UploaderFileListItem[]>([])
|
|
|
|
|
-const showRegionPicker = ref(false)
|
|
|
|
|
-const showMailingPicker = ref(false)
|
|
|
|
|
-const regionDraft = ref('')
|
|
|
|
|
-const mailingDraft = ref('')
|
|
|
|
|
|
|
+let redirectTimer: number | undefined
|
|
|
|
|
|
|
|
-const formatPhone = (value: string) => value.replace(/\D/g, '').slice(0, 11)
|
|
|
|
|
-const formatIdNumber = (value: string) =>
|
|
|
|
|
- value
|
|
|
|
|
- .replace(/[^\dXx]/g, '')
|
|
|
|
|
- .toUpperCase()
|
|
|
|
|
- .slice(0, 18)
|
|
|
|
|
-
|
|
|
|
|
-const openRegionPicker = () => {
|
|
|
|
|
- regionDraft.value = form.region.value
|
|
|
|
|
- showRegionPicker.value = true
|
|
|
|
|
-}
|
|
|
|
|
-const openMailingPicker = () => {
|
|
|
|
|
- mailingDraft.value = form.mailingArea.value
|
|
|
|
|
- showMailingPicker.value = true
|
|
|
|
|
|
|
+const redirectToRegistration = (): void => {
|
|
|
|
|
+ window.location.replace(REGISTRATION_URL)
|
|
|
}
|
|
}
|
|
|
-const toAreaSelection = ({ value, selectedOptions }: CascaderFinishEvent): AreaSelection => ({
|
|
|
|
|
- value: String(value),
|
|
|
|
|
- text: selectedOptions.map((option) => option.text).join(' / '),
|
|
|
|
|
|
|
+
|
|
|
|
|
+onMounted(() => {
|
|
|
|
|
+ redirectTimer = window.setTimeout(redirectToRegistration, REDIRECT_DELAY)
|
|
|
})
|
|
})
|
|
|
-const confirmRegion = (selection: CascaderFinishEvent) => {
|
|
|
|
|
- form.region = toAreaSelection(selection)
|
|
|
|
|
- showRegionPicker.value = false
|
|
|
|
|
- registrationForm.value?.resetValidation('region')
|
|
|
|
|
-}
|
|
|
|
|
-const confirmMailingArea = (selection: CascaderFinishEvent) => {
|
|
|
|
|
- form.mailingArea = toAreaSelection(selection)
|
|
|
|
|
- showMailingPicker.value = false
|
|
|
|
|
- registrationForm.value?.resetValidation('mailingArea')
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
-const beforeReadPhoto = (file: File | File[]) => {
|
|
|
|
|
- const files = Array.isArray(file) ? file : [file]
|
|
|
|
|
- if (files.some((item) => !item.type.startsWith('image/'))) {
|
|
|
|
|
- showToast('请选择图片文件')
|
|
|
|
|
- return false
|
|
|
|
|
|
|
+onBeforeUnmount(() => {
|
|
|
|
|
+ if (redirectTimer !== undefined) {
|
|
|
|
|
+ window.clearTimeout(redirectTimer)
|
|
|
}
|
|
}
|
|
|
- if (photos.value.length + files.length > 2) {
|
|
|
|
|
- showToast('最多上传2张照片')
|
|
|
|
|
- return false
|
|
|
|
|
- }
|
|
|
|
|
- return true
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-const onSubmit = () => {
|
|
|
|
|
- // 仅完成 UI 与前端校验。正式接口就绪后在此对接,不发送或持久化个人信息。
|
|
|
|
|
- showDialog({ title: '提示', message: '报名暂未开放,请稍后再试。' })
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-const goBack = () => {
|
|
|
|
|
- if (window.history.state?.back) router.back()
|
|
|
|
|
- else router.replace({ name: 'CompliancePlan' })
|
|
|
|
|
-}
|
|
|
|
|
|
|
+})
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
|
-.registration-page {
|
|
|
|
|
- min-height: 100vh;
|
|
|
|
|
- background: #f3f4f6;
|
|
|
|
|
- color: #283342;
|
|
|
|
|
- font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
|
|
|
|
- --van-nav-bar-title-text-color: #283342;
|
|
|
|
|
- --van-nav-bar-icon-color: #283342;
|
|
|
|
|
- --van-field-placeholder-text-color: #a2abb9;
|
|
|
|
|
- --van-field-label-color: #333;
|
|
|
|
|
- --van-field-input-text-color: #394452;
|
|
|
|
|
-
|
|
|
|
|
- h1,
|
|
|
|
|
- h2,
|
|
|
|
|
- p,
|
|
|
|
|
- ol {
|
|
|
|
|
- margin: 0;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.registration-hero {
|
|
|
|
|
- padding: 20px 20px 19px;
|
|
|
|
|
- background:
|
|
|
|
|
- radial-gradient(ellipse at 105% 0%, rgba(255, 218, 112, 0.25), transparent 48%),
|
|
|
|
|
- linear-gradient(120deg, #0b47a8 0%, #1260d2 72%, #2879e7 100%);
|
|
|
|
|
- color: #fff;
|
|
|
|
|
-
|
|
|
|
|
- h1 {
|
|
|
|
|
- font-size: 20px;
|
|
|
|
|
- line-height: 28px;
|
|
|
|
|
- font-weight: 700;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- p {
|
|
|
|
|
- margin-top: 4px;
|
|
|
|
|
- color: #a9c8f4;
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
- line-height: 18px;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.registration-steps {
|
|
|
|
|
|
|
+.redirect-page {
|
|
|
|
|
+ position: relative;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- align-items: center;
|
|
|
|
|
- margin-top: 13px !important;
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- list-style: none;
|
|
|
|
|
-
|
|
|
|
|
- li {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- gap: 5px;
|
|
|
|
|
- color: #a8c9f8;
|
|
|
|
|
- font-size: 11px;
|
|
|
|
|
- white-space: nowrap;
|
|
|
|
|
-
|
|
|
|
|
- &:not(:last-child)::after {
|
|
|
|
|
- content: '';
|
|
|
|
|
- flex: 1;
|
|
|
|
|
- min-width: 8px;
|
|
|
|
|
- height: 1px;
|
|
|
|
|
- margin: 0 6px 0 1px;
|
|
|
|
|
- background: rgba(183, 212, 255, 0.42);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- &:last-child {
|
|
|
|
|
- flex: none;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- .step-active {
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-weight: 600;
|
|
|
|
|
-
|
|
|
|
|
- .step-number {
|
|
|
|
|
- border-color: #ffdb29;
|
|
|
|
|
- background: #ffdb29;
|
|
|
|
|
- color: #765600;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.step-number {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- flex: 0 0 18px;
|
|
|
|
|
|
|
+ min-height: 100vh;
|
|
|
|
|
+ min-height: 100dvh;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
- height: 18px;
|
|
|
|
|
- border: 1px solid #8bb7fa;
|
|
|
|
|
- border-radius: 50%;
|
|
|
|
|
- background: rgba(209, 230, 255, 0.18);
|
|
|
|
|
- color: #dceaff;
|
|
|
|
|
- font-size: 11px;
|
|
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ padding: calc(28px + env(safe-area-inset-top, 0px)) 22px
|
|
|
|
|
+ calc(68px + env(safe-area-inset-bottom, 0px));
|
|
|
|
|
+ background: linear-gradient(160deg, #f7faff 0%, #edf5ff 54%, #f7fbff 100%);
|
|
|
|
|
+ color: #1f2937;
|
|
|
|
|
+ font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.registration-content {
|
|
|
|
|
- padding: 12px 12px 20px;
|
|
|
|
|
- padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px));
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.preparation-note {
|
|
|
|
|
- padding: 12px 14px;
|
|
|
|
|
- border: 1px solid #ffce66;
|
|
|
|
|
- border-radius: 8px;
|
|
|
|
|
- background: #fff9ea;
|
|
|
|
|
- color: #906109;
|
|
|
|
|
-
|
|
|
|
|
- h2 {
|
|
|
|
|
- font-size: 13px;
|
|
|
|
|
- font-weight: 700;
|
|
|
|
|
- line-height: 20px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- p {
|
|
|
|
|
- margin-top: 4px;
|
|
|
|
|
- font-size: 11.5px;
|
|
|
|
|
- line-height: 18px;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.registration-form section {
|
|
|
|
|
- margin-top: 16px;
|
|
|
|
|
|
|
+.glow {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ pointer-events: none;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.section-title {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- gap: 5px;
|
|
|
|
|
- font-size: 15px;
|
|
|
|
|
- font-weight: 700;
|
|
|
|
|
- line-height: 20px;
|
|
|
|
|
-
|
|
|
|
|
- &::before {
|
|
|
|
|
- content: '';
|
|
|
|
|
- width: 3px;
|
|
|
|
|
- height: 13px;
|
|
|
|
|
- border-radius: 2px;
|
|
|
|
|
- background: #1b7aff;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+.glow-top {
|
|
|
|
|
+ top: -92px;
|
|
|
|
|
+ right: -76px;
|
|
|
|
|
+ width: 238px;
|
|
|
|
|
+ height: 238px;
|
|
|
|
|
+ background: radial-gradient(circle, rgba(39, 133, 255, 0.18) 0%, transparent 70%);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.section-hint {
|
|
|
|
|
- margin-left: 4px;
|
|
|
|
|
- color: #a1aab8;
|
|
|
|
|
- font-size: 11px;
|
|
|
|
|
- font-weight: 400;
|
|
|
|
|
|
|
+.glow-bottom {
|
|
|
|
|
+ bottom: -116px;
|
|
|
|
|
+ left: -90px;
|
|
|
|
|
+ width: 286px;
|
|
|
|
|
+ height: 286px;
|
|
|
|
|
+ background: radial-gradient(circle, rgba(80, 173, 255, 0.14) 0%, transparent 70%);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.section-card {
|
|
|
|
|
- margin-top: 9px;
|
|
|
|
|
- padding: 16px 14px;
|
|
|
|
|
- border-radius: 9px;
|
|
|
|
|
- background: #fff;
|
|
|
|
|
- box-shadow: 0 2px 4px rgba(31, 45, 61, 0.06);
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-field) {
|
|
|
|
|
- display: block;
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- overflow: visible;
|
|
|
|
|
- background: transparent;
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- line-height: 20px;
|
|
|
|
|
-
|
|
|
|
|
- &:not(:last-child) {
|
|
|
|
|
- margin-bottom: 18px;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-field__label) {
|
|
|
|
|
- width: auto;
|
|
|
|
|
- margin: 0 0 6px;
|
|
|
|
|
- font-size: 13.5px;
|
|
|
|
|
- font-weight: 600;
|
|
|
|
|
- line-height: 19px;
|
|
|
|
|
-
|
|
|
|
|
- &::before {
|
|
|
|
|
- display: none;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-field__label--required)::after {
|
|
|
|
|
- content: '*';
|
|
|
|
|
- margin-left: 3px;
|
|
|
|
|
- color: #ff4d4f;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-field__body) {
|
|
|
|
|
- min-height: 44px;
|
|
|
|
|
- padding: 0 12px;
|
|
|
|
|
- border: 1px solid #eceef1;
|
|
|
|
|
- border-radius: 5px;
|
|
|
|
|
- background: #f5f6f8;
|
|
|
|
|
- box-sizing: border-box;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-field__control) {
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- line-height: 22px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-field__error-message) {
|
|
|
|
|
- padding-top: 4px;
|
|
|
|
|
- font-size: 11px;
|
|
|
|
|
- line-height: 16px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.choice-field .van-field__body),
|
|
|
|
|
- :deep(.picker-field .van-field__body) {
|
|
|
|
|
- min-height: 0;
|
|
|
|
|
- padding: 0;
|
|
|
|
|
- border: 0;
|
|
|
|
|
- background: transparent;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-field__value) {
|
|
|
|
|
- overflow: visible;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.gender-pill,
|
|
|
|
|
-.education-pill {
|
|
|
|
|
- min-height: 36px;
|
|
|
|
|
- border: 1px solid #eceef1;
|
|
|
|
|
|
|
+.redirect-card {
|
|
|
|
|
+ position: relative;
|
|
|
|
|
+ z-index: 1;
|
|
|
|
|
+ width: 100%;
|
|
|
|
|
+ max-width: 360px;
|
|
|
|
|
+ padding: 38px 24px 26px;
|
|
|
|
|
+ border: 1px solid rgba(255, 255, 255, 0.92);
|
|
|
border-radius: 22px;
|
|
border-radius: 22px;
|
|
|
- background: #f5f6f8;
|
|
|
|
|
|
|
+ background: rgba(255, 255, 255, 0.88);
|
|
|
|
|
+ box-shadow: 0 18px 48px rgba(49, 98, 157, 0.12);
|
|
|
|
|
+ text-align: center;
|
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
- -webkit-tap-highlight-color: transparent;
|
|
|
|
|
-
|
|
|
|
|
- &.selected {
|
|
|
|
|
- border-color: #1980ff;
|
|
|
|
|
- background: #ecf4ff;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ backdrop-filter: blur(12px);
|
|
|
|
|
|
|
|
- &.selected :deep(.van-radio__label),
|
|
|
|
|
- &.selected :deep(.van-checkbox__label) {
|
|
|
|
|
- color: #1878ed;
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.gender-pill {
|
|
|
|
|
- margin-right: 8px;
|
|
|
|
|
- padding: 0 15px;
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-radio__icon),
|
|
|
|
|
- :deep(.van-radio__icon .van-icon) {
|
|
|
|
|
- width: 16px;
|
|
|
|
|
- height: 16px;
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
- line-height: 16px;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-radio__icon .van-icon) {
|
|
|
|
|
- border-color: #cfd8e5;
|
|
|
|
|
|
|
+ h1,
|
|
|
|
|
+ p {
|
|
|
|
|
+ margin: 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- :deep(.van-radio__label) {
|
|
|
|
|
- margin-left: 6px;
|
|
|
|
|
- color: #657181;
|
|
|
|
|
- font-size: 13px;
|
|
|
|
|
- line-height: 20px;
|
|
|
|
|
|
|
+ h1 {
|
|
|
|
|
+ margin-top: 22px;
|
|
|
|
|
+ color: #172033;
|
|
|
|
|
+ font-size: 21px;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ line-height: 1.4;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.region-trigger {
|
|
|
|
|
|
|
+.icon-wrap {
|
|
|
|
|
+ position: relative;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
|
|
+ width: 68px;
|
|
|
|
|
+ height: 68px;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
|
|
- gap: 10px;
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- min-height: 44px;
|
|
|
|
|
- padding: 10px 12px;
|
|
|
|
|
- border: 1px solid #eceef1;
|
|
|
|
|
- border-radius: 5px;
|
|
|
|
|
- background: #f5f6f8;
|
|
|
|
|
- color: #394452;
|
|
|
|
|
- font-size: 14px;
|
|
|
|
|
- line-height: 22px;
|
|
|
|
|
- text-align: left;
|
|
|
|
|
- box-sizing: border-box;
|
|
|
|
|
- cursor: pointer;
|
|
|
|
|
-
|
|
|
|
|
- &.is-placeholder {
|
|
|
|
|
- color: #a2abb9;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ margin: 0 auto;
|
|
|
|
|
+ border-radius: 22px;
|
|
|
|
|
+ background: linear-gradient(145deg, #1677ff 0%, #39a5ff 100%);
|
|
|
|
|
+ box-shadow: 0 12px 28px rgba(22, 119, 255, 0.26);
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 31px;
|
|
|
|
|
|
|
|
- .van-icon {
|
|
|
|
|
- flex-shrink: 0;
|
|
|
|
|
- color: #a2abb9;
|
|
|
|
|
- font-size: 12px;
|
|
|
|
|
|
|
+ &::after {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ inset: -7px;
|
|
|
|
|
+ border: 1px solid rgba(22, 119, 255, 0.12);
|
|
|
|
|
+ border-radius: 27px;
|
|
|
|
|
+ content: '';
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.required-mark {
|
|
|
|
|
- margin-left: 3px;
|
|
|
|
|
- color: #ff4d4f;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.field-hint {
|
|
|
|
|
- margin-left: 5px;
|
|
|
|
|
- color: #a1aab8;
|
|
|
|
|
- font-size: 11px;
|
|
|
|
|
- font-weight: 400;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.field-note {
|
|
|
|
|
- color: #a1aab8;
|
|
|
|
|
- font-size: 11px;
|
|
|
|
|
- line-height: 17px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.education-content,
|
|
|
|
|
-.photo-content {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
|
|
+.redirect-card .description {
|
|
|
|
|
+ margin-top: 8px;
|
|
|
|
|
+ color: #7a8495;
|
|
|
|
|
+ font-size: 14px;
|
|
|
|
|
+ line-height: 1.6;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.education-options {
|
|
|
|
|
|
|
+.loading-status {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
- flex-direction: column;
|
|
|
|
|
- gap: 28px;
|
|
|
|
|
- margin-top: 16px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.education-card {
|
|
|
|
|
- padding-bottom: 28px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.education-pill {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- min-height: 44px;
|
|
|
|
|
- padding: 10px 12px;
|
|
|
|
|
- border-radius: 5px;
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-checkbox__icon) {
|
|
|
|
|
- display: none;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-checkbox__label) {
|
|
|
|
|
- margin: 0;
|
|
|
|
|
- color: #657181;
|
|
|
|
|
- font-size: 13px;
|
|
|
|
|
- line-height: 20px;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ min-height: 46px;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ gap: 9px;
|
|
|
|
|
+ margin-top: 24px;
|
|
|
|
|
+ border-radius: 12px;
|
|
|
|
|
+ background: #f4f8fd;
|
|
|
|
|
+ color: #526176;
|
|
|
|
|
+ font-size: 13px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.certificate-uploader {
|
|
|
|
|
- display: block;
|
|
|
|
|
|
|
+.redirect-button {
|
|
|
|
|
+ display: flex;
|
|
|
width: 100%;
|
|
width: 100%;
|
|
|
- margin-top: 5px;
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-uploader__wrapper),
|
|
|
|
|
- :deep(.van-uploader__input-wrapper) {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- :deep(.van-uploader__wrapper) {
|
|
|
|
|
- gap: 8px;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ height: 46px;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ gap: 5px;
|
|
|
|
|
+ margin-top: 18px;
|
|
|
|
|
+ padding: 0;
|
|
|
|
|
+ border: 0;
|
|
|
|
|
+ border-radius: 23px;
|
|
|
|
|
+ background: linear-gradient(90deg, #1677ff 0%, #2998ff 100%);
|
|
|
|
|
+ box-shadow: 0 9px 20px rgba(22, 119, 255, 0.22);
|
|
|
|
|
+ color: #fff;
|
|
|
|
|
+ font-size: 15px;
|
|
|
|
|
+ font-weight: 600;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ -webkit-tap-highlight-color: transparent;
|
|
|
|
|
|
|
|
- :deep(.van-uploader__preview) {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- margin: 0;
|
|
|
|
|
|
|
+ &:active {
|
|
|
|
|
+ opacity: 0.86;
|
|
|
|
|
+ transform: translateY(1px);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- :deep(.van-uploader__preview-image) {
|
|
|
|
|
- width: 100%;
|
|
|
|
|
- height: 160px;
|
|
|
|
|
- border-radius: 5px;
|
|
|
|
|
- background: #f5f6f8;
|
|
|
|
|
|
|
+ &:focus-visible {
|
|
|
|
|
+ outline: 2px solid #1677ff;
|
|
|
|
|
+ outline-offset: 3px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.upload-placeholder {
|
|
|
|
|
- display: flex;
|
|
|
|
|
- min-height: 95px;
|
|
|
|
|
- flex-direction: column;
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- gap: 3px;
|
|
|
|
|
- border: 1px dashed #b4ccec;
|
|
|
|
|
- border-radius: 5px;
|
|
|
|
|
- background: #f5f6f8;
|
|
|
|
|
- box-sizing: border-box;
|
|
|
|
|
|
|
+.redirect-card .fallback-tip {
|
|
|
|
|
+ margin-top: 13px;
|
|
|
|
|
+ color: #a0a8b4;
|
|
|
|
|
+ font-size: 12px;
|
|
|
|
|
+ line-height: 1.5;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.upload-plus {
|
|
|
|
|
|
|
+.page-footer {
|
|
|
|
|
+ position: absolute;
|
|
|
|
|
+ right: 0;
|
|
|
|
|
+ bottom: calc(24px + env(safe-area-inset-bottom, 0px));
|
|
|
|
|
+ left: 0;
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
- width: 32px;
|
|
|
|
|
- height: 32px;
|
|
|
|
|
- border-radius: 50%;
|
|
|
|
|
- background: #e5efff;
|
|
|
|
|
- color: #428cff;
|
|
|
|
|
- font-size: 22px;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.upload-label {
|
|
|
|
|
- color: #657181;
|
|
|
|
|
- font-size: 13px;
|
|
|
|
|
- line-height: 20px;
|
|
|
|
|
|
|
+ gap: 5px;
|
|
|
|
|
+ color: #9ba8b8;
|
|
|
|
|
+ font-size: 12px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.mailing-card {
|
|
|
|
|
- :deep(.van-field:not(:last-child)) {
|
|
|
|
|
- margin-bottom: 6px;
|
|
|
|
|
|
|
+@media (max-width: 360px) {
|
|
|
|
|
+ .redirect-page {
|
|
|
|
|
+ padding-right: 16px;
|
|
|
|
|
+ padding-left: 16px;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- :deep(.address-label) {
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- width: 1px;
|
|
|
|
|
- height: 1px;
|
|
|
|
|
- margin: -1px;
|
|
|
|
|
- overflow: hidden;
|
|
|
|
|
- clip-path: inset(50%);
|
|
|
|
|
|
|
+ .redirect-card {
|
|
|
|
|
+ padding: 32px 20px 23px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-.submit-button {
|
|
|
|
|
- height: 55px;
|
|
|
|
|
- margin-top: 20px;
|
|
|
|
|
- border: 0;
|
|
|
|
|
- background: #1977ff;
|
|
|
|
|
- box-shadow: 0 5px 12px rgba(25, 119, 255, 0.26);
|
|
|
|
|
- font-size: 18px;
|
|
|
|
|
- font-weight: 700;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-.privacy-note {
|
|
|
|
|
- margin-top: 12px;
|
|
|
|
|
- color: #a1aab8;
|
|
|
|
|
- font-size: 10px;
|
|
|
|
|
- line-height: 18px;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
|
|
+@media (prefers-reduced-motion: reduce) {
|
|
|
|
|
+ .redirect-button:active {
|
|
|
|
|
+ transform: none;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|