|
@@ -1,613 +1,57 @@
|
|
<template>
|
|
<template>
|
|
<div class="fenghui">
|
|
<div class="fenghui">
|
|
- <!-- <div class="swith">
|
|
|
|
|
|
+ <div class="swith" :style="componentId !== '' ? 'color: #000000' : ''">
|
|
<div class="title" @click="showLange = true">
|
|
<div class="title" @click="showLange = true">
|
|
- {{ langObjT[langType] }}
|
|
|
|
|
|
+ {{ langObjT[langSelect] }}
|
|
<van-icon name="arrow-down" />
|
|
<van-icon name="arrow-down" />
|
|
</div>
|
|
</div>
|
|
<van-popup v-model:show="showLange" destroy-on-close round position="bottom">
|
|
<van-popup v-model:show="showLange" destroy-on-close round position="bottom">
|
|
- <van-picker :model-value="[langType]" :columns="langObj" @cancel="showLange = false"
|
|
|
|
|
|
+ <van-picker :model-value="[langSelect]" :columns="langObj" @cancel="showLange = false"
|
|
@confirm="langChange" />
|
|
@confirm="langChange" />
|
|
</van-popup>
|
|
</van-popup>
|
|
- </div> -->
|
|
|
|
- <van-image style="width: 100%;" :src="soundbyteJpg" />
|
|
|
|
- <br />
|
|
|
|
- <van-form label-width="8em" @submit="onSubmit">
|
|
|
|
- <div class="submit">
|
|
|
|
- <div class="introduce">
|
|
|
|
- <h4 class="text" v-text="lang[langType].marst"></h4>
|
|
|
|
- <p class="text" v-html="lang[langType].marstContent"></p>
|
|
|
|
- <h4 class="text" v-text="lang[langType].wrestleMania"></h4>
|
|
|
|
- <p class="text" v-html="lang[langType].wrestleManiaContent"></p>
|
|
|
|
- <h4 class="text" v-text="lang[langType].venue"></h4>
|
|
|
|
- <p class="text" v-html="lang[langType].venueContent"></p>
|
|
|
|
- <h4 class="text" v-text="lang[langType].organization"></h4>
|
|
|
|
- <van-row>
|
|
|
|
- <van-col span="6">
|
|
|
|
- <div class="text" v-text="lang[langType].organizationSub1"></div>
|
|
|
|
- </van-col>
|
|
|
|
- <van-col span="18">
|
|
|
|
- <div class="text" v-html="lang[langType].organizationSub2"></div>
|
|
|
|
- </van-col>
|
|
|
|
- </van-row>
|
|
|
|
- <van-row>
|
|
|
|
- <van-col span="6">
|
|
|
|
- <div class="text" v-text="lang[langType].organizationSub3"></div>
|
|
|
|
- </van-col>
|
|
|
|
- <van-col span="18">
|
|
|
|
- <div class="text" v-html="lang[langType].organizationSub4"></div>
|
|
|
|
- </van-col>
|
|
|
|
- </van-row>
|
|
|
|
- <h4 class="text" v-text="lang[langType].scale"></h4>
|
|
|
|
- <div class="text" style="text-indent: 2em;" v-text="lang[langType].scaleContent"></div>
|
|
|
|
- </div>
|
|
|
|
- <van-cell-group inset v-if="showForm">
|
|
|
|
- <!-- <h4 class="title" v-text="lang[langType].basicInformation"></h4> -->
|
|
|
|
- <h4 class="text" v-text="lang[langType].signUp"></h4>
|
|
|
|
- <!-- 国家 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.countryOrRegion" clickable
|
|
|
|
- right-icon="location-o" readonly :placeholder="lang[langType].countryOrRegionContent"
|
|
|
|
- @click="showCountryOrRegion = true" required>
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].countryOrRegion"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
- <van-popup v-model:show="showCountryOrRegion" destroy-on-close round position="bottom">
|
|
|
|
- <van-picker :columns="countryOrRegionList" @cancel="showCountryOrRegion = false"
|
|
|
|
- @confirm="onCountryOrRegionConfirm" />
|
|
|
|
- </van-popup>
|
|
|
|
-
|
|
|
|
- <!-- 姓名 -->
|
|
|
|
- <van-field input-align="right" size="large" v-show="from.countryOrRegion === '中国'"
|
|
|
|
- :rules="[{ required: from.countryOrRegion === '中国', trigger: 'onBlur', message: lang[langType].nameContent }]"
|
|
|
|
- :required="from.countryOrRegion === '中国'" v-model="from.name"
|
|
|
|
- :placeholder="lang[langType].nameContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].name"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- <!-- 省市 -->
|
|
|
|
- <van-field input-align="right" size="large" v-show="from.countryOrRegion === '中国'"
|
|
|
|
- :rules="[{ required: from.countryOrRegion === '中国', trigger: 'onBlur', message: lang[langType].provinceCityContent }]"
|
|
|
|
- v-model="from.provinceCity" :required="from.countryOrRegion === '中国'"
|
|
|
|
- :placeholder="lang[langType].provinceCityContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].provinceCity"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 姓 -->
|
|
|
|
- <van-field input-align="right" size="large" v-show="from.countryOrRegion === '其他国家'"
|
|
|
|
- :rules="[{ required: from.countryOrRegion === '其他国家', trigger: 'onBlur', message: lang[langType].nameContent }]"
|
|
|
|
- :required="from.countryOrRegion === '其他国家'" v-model="from.lastName"
|
|
|
|
- :placeholder="lang[langType].lastNameContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].lastName"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 名 -->
|
|
|
|
- <van-field input-align="right" size="large" v-show="from.countryOrRegion === '其他国家'"
|
|
|
|
- :rules="[{ required: from.countryOrRegion === '其他国家', trigger: 'onBlur', message: lang[langType].nameContent }]"
|
|
|
|
- :required="from.countryOrRegion === '其他国家'" v-model="from.firstName"
|
|
|
|
- :placeholder="lang[langType].firstNameContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].firstName"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 国家/地区 -->
|
|
|
|
- <van-field input-align="right" size="large" v-show="from.countryOrRegion === '其他国家'"
|
|
|
|
- :rules="[{ required: from.countryOrRegion === '其他国家', trigger: 'onBlur', message: lang[langType].countryRegionContent }]"
|
|
|
|
- :required="from.countryOrRegion === '其他国家'" v-model="from.countryRegion"
|
|
|
|
- :placeholder="lang[langType].countryRegionContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].countryRegion"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <div style="background-color: #F7F7F7;height: 10px;"></div>
|
|
|
|
-
|
|
|
|
- <!-- 性别 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].genderContent }]"
|
|
|
|
- v-model="from.gender" required :placeholder="lang[langType].genderContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].gender"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 生日 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].birthdayContent }]"
|
|
|
|
- clickable right-icon="calendar-o" readonly @click="showBirthday = true" v-model="from.birthday"
|
|
|
|
- required :placeholder="lang[langType].birthdayContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].birthday"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
- <van-popup v-model:show="showBirthday" destroy-on-close round position="bottom">
|
|
|
|
- <van-date-picker @confirm="packerConfirm" :title="lang[langType].birthday"
|
|
|
|
- @cancel="showBirthday = false" :min-date="new Date(1970, 0, 1)" :max-date="new Date()" />
|
|
|
|
- </van-popup>
|
|
|
|
-
|
|
|
|
- <!-- 照片 -->
|
|
|
|
- <van-field input-align="right" size="large" :placeholder="lang[langType].photoContent" required
|
|
|
|
- :rules="[{ required: true, trigger: 'onChange', message: lang[langType].photoContent }]"
|
|
|
|
- v-model="from.photoUrl">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].photo"></span>
|
|
|
|
- </template>
|
|
|
|
- <template #input>
|
|
|
|
- <van-uploader :preview-full-image="false" accept="image/*" v-model="photo"
|
|
|
|
- :before-delete="beforeDelete" :max-count="1" :max-size="524288000" @oversize="filesize"
|
|
|
|
- :after-read="beforeRead" result-type="file">
|
|
|
|
- </van-uploader>
|
|
|
|
- <p style="font-size: 12px;" v-text="lang[langType].photoSubContent"> </p>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 手机号 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].genderContent }]"
|
|
|
|
- v-model="from.contact" type="number" required :placeholder="lang[langType].contactContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].contact"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 邮箱 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emailContent }]" required
|
|
|
|
- v-model="from.email" :placeholder="lang[langType].emailContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].email"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 紧急联系人 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.emergencyContact"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactContent }]"
|
|
|
|
- required :placeholder="lang[langType].emergencyContactContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].emergencyContact"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 紧急联系人电话 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.emergencyContactPhone" required
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactPhoneContent }]"
|
|
|
|
- :placeholder="lang[langType].emergencyContactPhoneContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].emergencyContactPhone"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 证件类型 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.cardTypeName" clickable
|
|
|
|
- right-icon="calendar-o" readonly :placeholder="lang[langType].conferenceTypeContent"
|
|
|
|
- @click="showCardType = true" required>
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].conferenceType"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
- <van-popup v-model:show="showCardType" destroy-on-close round position="bottom">
|
|
|
|
- <van-picker :model-value="from.cardType" :columns="cardTypeList" @cancel="showCardType = false"
|
|
|
|
- @confirm="onConfirm" />
|
|
|
|
- </van-popup>
|
|
|
|
-
|
|
|
|
- <!-- 证件 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].passportContent }]"
|
|
|
|
- v-model="from.passport" required :placeholder="lang[langType].passportContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].passport"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 宗教 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].beliefContent }]"
|
|
|
|
- v-model="from.belief" required :placeholder="lang[langType].beliefContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].belief"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 饮食要求 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.catering" rows="3" autosize
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].cateringContent }]"
|
|
|
|
- type="textarea" required :placeholder="lang[langType].cateringContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].catering"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <div style="background-color: #F7F7F7;height: 10px;"></div>
|
|
|
|
-
|
|
|
|
- <!-- 工作单位 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].workUnit }]" required
|
|
|
|
- v-model="from.workUnit" :placeholder="lang[langType].companyContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].company"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 单位类型 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].unitTypeContent }]"
|
|
|
|
- v-model="from.unitType" required :placeholder="lang[langType].unitTypeContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].unitType"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 职务 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.career"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].careerContent }]" required
|
|
|
|
- :placeholder="lang[langType].careerContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].career"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 传真 -->
|
|
|
|
- <van-field input-align="right" size="large"
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].faxContent }]"
|
|
|
|
- v-model="from.fax" type="number" required :placeholder="lang[langType].faxContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].fax"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 办公地址 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.officeAddress" rows="3" autosize required
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].officeAddressContent }]"
|
|
|
|
- type="textarea" :placeholder="lang[langType].officeAddressContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].officeAddress"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <div style="background-color: #F7F7F7;height: 10px;"></div>
|
|
|
|
-
|
|
|
|
- <!-- 接受采访意向 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.interview" required
|
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].interviewContent }]"
|
|
|
|
- :placeholder="lang[langType].interviewContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].interview"></span>
|
|
|
|
- </template>
|
|
|
|
- <template #input>
|
|
|
|
- <van-radio-group style="justify-content: flex-end;width: 100%;" v-model="from.interview"
|
|
|
|
- direction="horizontal">
|
|
|
|
- <van-radio name="同意">同意</van-radio>
|
|
|
|
- <van-radio name="拒绝">拒绝</van-radio>
|
|
|
|
- </van-radio-group>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <div style="background-color: #F7F7F7;height: 10px;"></div>
|
|
|
|
-
|
|
|
|
- <!-- 抵达西安交通车次 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.reachTrainNumber"
|
|
|
|
- :placeholder="lang[langType].reachTrainNumberContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].reachTrainNumber"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 抵达西安时间 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.reachTime" clickable
|
|
|
|
- right-icon="calendar-o" readonly @click="showReachTime = true"
|
|
|
|
- :placeholder="lang[langType].reachTimeContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].reachTime"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
- <van-popup v-model:show="showReachTime" destroy-on-close round position="bottom">
|
|
|
|
- <van-picker :title="lang[langType].reachTime" :columns="dateTimeColumns"
|
|
|
|
- @confirm="reachTimeConfirm" @cancel="showReachTime = false" />
|
|
|
|
- </van-popup>
|
|
|
|
-
|
|
|
|
- <!-- 离开车次 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.leavingTrainNumber"
|
|
|
|
- :placeholder="lang[langType].leavingTrainNumberContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].leavingTrainNumber"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
-
|
|
|
|
- <!-- 离开时间 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.leavingTime" clickable
|
|
|
|
- right-icon="calendar-o" readonly @click="showLeavingTime = true"
|
|
|
|
- :placeholder="lang[langType].leavingTimeContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].leavingTime"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
- <van-popup v-model:show="showLeavingTime" destroy-on-close round position="bottom">
|
|
|
|
- <van-picker :title="lang[langType].leavingTime" :columns="dateTimeColumns"
|
|
|
|
- @confirm="leavingTimeConfirm" @cancel="showLeavingTime = false" />
|
|
|
|
- </van-popup>
|
|
|
|
-
|
|
|
|
- <!-- 离店时间 -->
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.checkOutTime" clickable
|
|
|
|
- right-icon="calendar-o" readonly @click="showCheckOutTime = true"
|
|
|
|
- :placeholder="lang[langType].checkOutTimeContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].checkOutTime"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
- <van-popup v-model:show="showCheckOutTime" destroy-on-close round position="bottom">
|
|
|
|
- <van-picker :title="lang[langType].checkOutTime" :columns="dateTimeColumns"
|
|
|
|
- @confirm="checkOutTimeConfirm" @cancel="showCheckOutTime = false" />
|
|
|
|
- </van-popup>
|
|
|
|
-
|
|
|
|
- <!-- <br /> -->
|
|
|
|
- <!-- <h4 class="title" v-text="lang[langType].conference"></h4> -->
|
|
|
|
- <!-- <br /> -->
|
|
|
|
- <!-- <h4 class="title" v-text="lang[langType].orther"></h4> -->
|
|
|
|
- <div style="background-color: #F7F7F7;height: 10px;"></div>
|
|
|
|
- <van-field input-align="right" size="large" v-model="from.message" rows="3" autosize type="textarea"
|
|
|
|
- :placeholder="lang[langType].ortherNotesContent">
|
|
|
|
- <template #label>
|
|
|
|
- <span class="label" v-html="lang[langType].ortherNotes"></span>
|
|
|
|
- </template>
|
|
|
|
- </van-field>
|
|
|
|
- </van-cell-group>
|
|
|
|
- </div>
|
|
|
|
-
|
|
|
|
- <br />
|
|
|
|
- <van-button class="btn_bottom" block type="primary" native-type="submit">
|
|
|
|
- {{ lang[langType].signUp }}
|
|
|
|
- </van-button>
|
|
|
|
- <div style="text-align: center;line-height: 2.5em;font-size: 12px;" v-text="lang[langType].copyright"></div>
|
|
|
|
- </van-form>
|
|
|
|
|
|
+ </div>
|
|
|
|
+ <Introduction v-if="!componentId" :langType="langSelect" @checkVerificationCode="checkVerificationCode" />
|
|
|
|
+ <!-- 动态组件 -->
|
|
|
|
+ <Fore25 v-if="componentId === 'fore25'" :langType="langSelect" @closeComponent="closeComponent" />
|
|
|
|
+ <Chin25 v-if="componentId === 'chin25'" :langType="langSelect" @closeComponent="closeComponent" />
|
|
|
|
+ <Work25 v-if="componentId === 'work25'" :langType="langSelect" @closeComponent="closeComponent" />
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script setup>
|
|
<script setup>
|
|
-import { ref, reactive, computed } from 'vue';
|
|
|
|
-import { showToast, showDialog } from 'vant';
|
|
|
|
-import axios from 'axios';
|
|
|
|
-import config from '@/config/index.js';
|
|
|
|
-import soundbyteJpg from '../../assets/img/2025lameifenghui.png';
|
|
|
|
-
|
|
|
|
-import { saveData } from '@/api/2025.js';
|
|
|
|
-
|
|
|
|
-import langpkg from './lang.js';
|
|
|
|
-
|
|
|
|
-let arrivalTime = []
|
|
|
|
-const dateTimeColumns = computed(() => {
|
|
|
|
- const now = new Date();
|
|
|
|
- const dateList = lang.value[langType.value].dateList;
|
|
|
|
- const years = [{ text: dateList[0], value: '', disabled: true }, ...Array.from({ length: Number(now.getFullYear()) + 1 - 1970 }, (_, i) => {
|
|
|
|
- const t = 1970 + i + ''
|
|
|
|
- return {
|
|
|
|
- text: t,
|
|
|
|
- value: t
|
|
|
|
- }
|
|
|
|
- }).reverse()];
|
|
|
|
- const months = [{ text: dateList[1], value: '', disabled: true }, ...Array.from({ length: 12 }, (_, i) => {
|
|
|
|
- const m = (i + 1).toString().padStart(2, '0')
|
|
|
|
- return {
|
|
|
|
- text: m,
|
|
|
|
- value: m
|
|
|
|
- }
|
|
|
|
- })];
|
|
|
|
-
|
|
|
|
- // 动态计算当前选中年月对应的天数
|
|
|
|
- const daysInMonth = new Date(
|
|
|
|
- parseInt(arrivalTime[0] || '0'),
|
|
|
|
- parseInt(arrivalTime[1] || '0'),
|
|
|
|
- 0
|
|
|
|
- ).getDate();
|
|
|
|
- const days = [{ text: dateList[2], value: '', disabled: true }, ...Array.from({ length: daysInMonth }, (_, i) => {
|
|
|
|
- const d = (i + 1).toString().padStart(2, '0')
|
|
|
|
- return {
|
|
|
|
- text: d,
|
|
|
|
- value: d
|
|
|
|
- }
|
|
|
|
- })];
|
|
|
|
-
|
|
|
|
- const hours = [{ text: dateList[3], value: '', disabled: true }, ...Array.from({ length: 24 }, (_, i) => {
|
|
|
|
- const h = i.toString().padStart(2, '0')
|
|
|
|
- return {
|
|
|
|
- text: h,
|
|
|
|
- value: h
|
|
|
|
- }
|
|
|
|
- })];
|
|
|
|
- const minutes = [{ text: dateList[4], value: '', disabled: true }, ...Array.from({ length: 60 }, (_, i) => {
|
|
|
|
- const m = i.toString().padStart(2, '0')
|
|
|
|
- return {
|
|
|
|
- text: m,
|
|
|
|
- value: m
|
|
|
|
- }
|
|
|
|
- })];
|
|
|
|
- return [years, months, days, hours, minutes];
|
|
|
|
-});
|
|
|
|
-/** const langObj = [
|
|
|
|
|
|
+// import { ref, reactive, computed } from 'vue';
|
|
|
|
+import { ref } from 'vue';
|
|
|
|
+import Introduction from './introduction.vue';
|
|
|
|
+import Fore25 from './form.vue';
|
|
|
|
+import Chin25 from './form1.vue';
|
|
|
|
+import Work25 from './form2.vue';
|
|
|
|
+const langSelect = ref(localStorage.getItem('langSelect') || 'zh');
|
|
|
|
+const componentId = ref('work25');
|
|
|
|
+const showLange = ref(false);
|
|
|
|
+
|
|
|
|
+const langObj = [
|
|
{ text: '中文', value: 'zh' },
|
|
{ text: '中文', value: 'zh' },
|
|
{ text: 'English', value: 'en' },
|
|
{ text: 'English', value: 'en' },
|
|
]
|
|
]
|
|
const langObjT = {
|
|
const langObjT = {
|
|
zh: '中文',
|
|
zh: '中文',
|
|
en: 'English',
|
|
en: 'English',
|
|
-} */
|
|
|
|
-
|
|
|
|
-// import en from './en.json';
|
|
|
|
-/**
|
|
|
|
- * window.$originData.orginParames.title 页面标题
|
|
|
|
- * window.$originData.orginParames.parameters 固定参数值
|
|
|
|
- * window.$originData.urlParames url参数
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
-const lang = ref(langpkg);
|
|
|
|
-const langType = ref(localStorage.getItem('langType') || 'zh');
|
|
|
|
-// const showLange = ref(false);
|
|
|
|
-const showCardType = ref(false);
|
|
|
|
-const showReachTime = ref(false);
|
|
|
|
-const showLeavingTime = ref(false);
|
|
|
|
-const showBirthday = ref(false);
|
|
|
|
-const showCheckOutTime = ref(false);
|
|
|
|
-const showCountryOrRegion = ref(false);
|
|
|
|
-
|
|
|
|
-// 展示表单
|
|
|
|
-const showForm = ref(false);
|
|
|
|
-
|
|
|
|
-const cardTypeList = ref(lang.value[langType.value].cardTypeList)
|
|
|
|
-const countryOrRegionList = ref(lang.value[langType.value].countryOrRegionList)
|
|
|
|
-const photo = ref([])
|
|
|
|
-const isFile = () => {
|
|
|
|
- return photo.value && photo.value.length;
|
|
|
|
-};
|
|
|
|
-// const langChange = ({ selectedValues }) => {
|
|
|
|
-// langType.value = selectedValues[0];
|
|
|
|
-// localStorage.setItem('langType', selectedValues[0]);
|
|
|
|
-// const cardTypeList = ref(lang.value[langType.value].cardTypeList)
|
|
|
|
-// const countryOrRegionList = ref(lang.value[langType.value].countryOrRegionList)
|
|
|
|
-// showLange.value = false;
|
|
|
|
-// };
|
|
|
|
-
|
|
|
|
-const from = reactive({
|
|
|
|
- name: '',
|
|
|
|
- idCard: '',
|
|
|
|
- career: '',
|
|
|
|
- contact: '',
|
|
|
|
- photoUrl: '',
|
|
|
|
- cardType: [],
|
|
|
|
- birthday: '',
|
|
|
|
- message: '',
|
|
|
|
- arrivalTime: ''
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-const beforeDelete = () => {
|
|
|
|
- from.photoUrl = '';
|
|
|
|
- photo.value = [];
|
|
|
|
-}
|
|
|
|
-const filesize = () => showToast(lang.value[langType.value].fileSize);
|
|
|
|
-const createTextDate = values => values.slice(0, 3).join('-') + ' ' + values.slice(3).join(':');
|
|
|
|
-const packerConfirm = (values) => {
|
|
|
|
- showBirthday.value = false;
|
|
|
|
- from.birthday = createTextDate(values.selectedValues);
|
|
|
|
-}
|
|
|
|
-const reachTimeConfirm = ({ selectedValues }) => {
|
|
|
|
- showReachTime.value = false;
|
|
|
|
- from.reachTime = createTextDate(selectedValues);
|
|
|
|
-}
|
|
|
|
-const leavingTimeConfirm = ({ selectedValues }) => {
|
|
|
|
- showLeavingTime.value = false;
|
|
|
|
- from.leavingTime = createTextDate(selectedValues);
|
|
|
|
}
|
|
}
|
|
-const checkOutTimeConfirm = ({ selectedValues }) => {
|
|
|
|
- showCheckOutTime.value = false;
|
|
|
|
- from.checkOutTime = createTextDate(selectedValues);
|
|
|
|
-}
|
|
|
|
-const onCountryOrRegionConfirm = ({ selectedValues }) => {
|
|
|
|
- showCountryOrRegion.value = false;
|
|
|
|
- from.name = '';
|
|
|
|
- from.provinceCity = '';
|
|
|
|
- from.lastName = '';
|
|
|
|
- from.firstName = '';
|
|
|
|
- from.countryRegion = '';
|
|
|
|
- from.countryOrRegion = selectedValues[0];
|
|
|
|
|
|
+const checkVerificationCode = (code) => {
|
|
|
|
+ componentId.value = code;
|
|
}
|
|
}
|
|
|
|
|
|
-// 选择证件类型
|
|
|
|
-const onConfirm = ({ selectedValues }) => {
|
|
|
|
- showCardType.value = false;
|
|
|
|
- from.cardType = selectedValues;
|
|
|
|
- from.cardTypeName = selectedValues[0];
|
|
|
|
-};
|
|
|
|
|
|
+const closeComponent = () => {
|
|
|
|
+ componentId.value = '';
|
|
|
|
+}
|
|
|
|
|
|
-const beforeRead = () => {
|
|
|
|
- if (!isFile()) showToast(lang.value[langType.value].changePhono);
|
|
|
|
- const item = photo.value[0]
|
|
|
|
- const oriData = new FormData();
|
|
|
|
- oriData.append('file', item.file);
|
|
|
|
- axios({
|
|
|
|
- method: 'post',
|
|
|
|
- url: config.base.Url2025 + 'dev/file/uploadDynamicReturnUrl',
|
|
|
|
- headers: {
|
|
|
|
- 'Content-Type': 'multipart/form-data',
|
|
|
|
- },
|
|
|
|
- data: oriData,
|
|
|
|
- }).then(res => {
|
|
|
|
- if (res.status !== 200 || res.data.code !== 0) {
|
|
|
|
- showToast(lang.value[langType.value].upFileError);
|
|
|
|
- from.photoUrl = ''
|
|
|
|
- return
|
|
|
|
- }
|
|
|
|
- showToast(lang.value[langType.value].upFileSusscess);
|
|
|
|
- from.photoUrl = res.data.data
|
|
|
|
- photo.value = [
|
|
|
|
- {
|
|
|
|
- url: res.data.data,
|
|
|
|
- file: item.file,
|
|
|
|
- }
|
|
|
|
- ]
|
|
|
|
- })
|
|
|
|
- return false;
|
|
|
|
|
|
+const langChange = ({ selectedValues }) => {
|
|
|
|
+ langSelect.value = selectedValues[0];
|
|
|
|
+ localStorage.setItem('langSelect', selectedValues[0]);
|
|
|
|
+ // const cardTypeList = ref(lang.value[langSelect.value].cardTypeList)
|
|
|
|
+ // const countryOrRegionList = ref(lang.value[langSelect.value].countryOrRegionList)
|
|
|
|
+ showLange.value = false;
|
|
};
|
|
};
|
|
|
|
|
|
-// 选择权限范围
|
|
|
|
-let loading= false
|
|
|
|
-const onSubmit = () => {
|
|
|
|
- if (loading) return
|
|
|
|
- loading = true
|
|
|
|
- if (!showForm.value) {
|
|
|
|
- showForm.value = true;
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- if (!isFile()) showToast(lang.value[langType.value].selectFile);
|
|
|
|
- saveData({
|
|
|
|
- countryOrRegion: from.countryOrRegion, // 国家/地区
|
|
|
|
- name: from.name, // 姓名
|
|
|
|
- lastName: from.lastName, // 姓
|
|
|
|
- firstName: from.firstName, // 名
|
|
|
|
- photo: from.photoUrl, // 照片
|
|
|
|
- gender: from.gender, // 性别
|
|
|
|
- phone: from.contact, // 手机号
|
|
|
|
- email: from.email, // 邮箱
|
|
|
|
- birthDate: from.birthday, // 出生日期
|
|
|
|
- workUnit: from.workUnit, // 工作单位
|
|
|
|
- countryRegion: from.countryRegion, // 国家/地区
|
|
|
|
- provinceCity: from.provinceCity, // 省市区
|
|
|
|
- cardTypeName: from.cardTypeName, // 证件类型
|
|
|
|
- unitType: from.unitType, // 单位类型
|
|
|
|
- idCard: from.passport, // 证件号
|
|
|
|
- religion: from.belief, // 宗教
|
|
|
|
- position: from.career, // 职务
|
|
|
|
- fax: from.fax, // fax
|
|
|
|
- officeAddress: from.officeAddress, // 办公地址
|
|
|
|
- dietaryRequirements: from.catering, // 饮食要求
|
|
|
|
- emergencyContact: from.emergencyContact, // 紧急联系人
|
|
|
|
- emergencyContactPhone: from.emergencyContactPhone, // 紧急联系人电话
|
|
|
|
- interviewIntention: from.interview, // 接受采访意向
|
|
|
|
- arrivalNumberXian: from.reachTrainNumber, // 抵达西安交通车次
|
|
|
|
- arrivalTimeXian: from.reachTime, // 抵达西安时间
|
|
|
|
- departureNumber: from.leavingTrainNumber, // 离开车次
|
|
|
|
- departureTime: from.leavingTime, // 离开时间
|
|
|
|
- checkOutTime: from.checkOutTime, // 离店时间
|
|
|
|
- remarks: from.message, // 备注
|
|
|
|
- }).then(() => {
|
|
|
|
- // 清空表单内容 from
|
|
|
|
- // Object.keys(from).forEach((key) => {
|
|
|
|
- // from[key] = '';
|
|
|
|
- // });
|
|
|
|
- loading = false
|
|
|
|
- showDialog({
|
|
|
|
- message: lang.value[langType.value].registration,
|
|
|
|
- })
|
|
|
|
- }).catch((err) => {
|
|
|
|
- console.log(err);
|
|
|
|
- loading = false
|
|
|
|
- showToast(lang.value[langType.value].registrationError);
|
|
|
|
- });
|
|
|
|
-};
|
|
|
|
</script>
|
|
</script>
|
|
<style lang="scss">
|
|
<style lang="scss">
|
|
.fenghui {
|
|
.fenghui {
|
|
@@ -620,6 +64,7 @@ const onSubmit = () => {
|
|
position: relative;
|
|
position: relative;
|
|
font-family: Source Han Sans CN !important;
|
|
font-family: Source Han Sans CN !important;
|
|
|
|
|
|
|
|
+
|
|
.swith {
|
|
.swith {
|
|
position: absolute;
|
|
position: absolute;
|
|
right: 10px;
|
|
right: 10px;
|
|
@@ -632,82 +77,18 @@ const onSubmit = () => {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- .text {
|
|
|
|
- padding: 8px 8px 0 8px;
|
|
|
|
- text-align: justify;
|
|
|
|
- line-height: 1.75em;
|
|
|
|
- font-size: 16px;
|
|
|
|
- color: #3D3D3D;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- h4 {
|
|
|
|
- color: #031280 !important;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .introduce {
|
|
|
|
- background-color: #FAFAFA;
|
|
|
|
- padding-bottom: 10px;
|
|
|
|
- overflow: hidden;
|
|
|
|
- font-family: Source Han Serif CN !important;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .label {
|
|
|
|
- min-width: 4em;
|
|
|
|
- display: inline-block;
|
|
|
|
- text-align: justify;
|
|
|
|
- text-align-last: justify;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- .van-hairline--bottom:after {
|
|
|
|
- border-bottom-width: 0px;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .van-button__text {
|
|
|
|
- font-size: 15px;
|
|
|
|
- font-weight: 400;
|
|
|
|
- color: #031280;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .icon {
|
|
|
|
- position: absolute;
|
|
|
|
- right: 10px;
|
|
|
|
- top: 50%;
|
|
|
|
- transform: translateY(-50%);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .btn_bottom {
|
|
|
|
- color: #ffffff;
|
|
|
|
- text-align: center;
|
|
|
|
- background: linear-gradient(270deg, #1D19BC 0%, #1C4CD5 100%);
|
|
|
|
- width: calc(100% - 80px);
|
|
|
|
- margin: 0 auto;
|
|
|
|
-
|
|
|
|
- .van-button__text {
|
|
|
|
- color: #ffffff;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .submit {
|
|
|
|
- .title {
|
|
|
|
- padding: 0 16px;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .van-cell-group,
|
|
|
|
- .van-cell {
|
|
|
|
- margin: 0%;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- .van-field__body input {
|
|
|
|
|
|
|
|
- &::placeholder,
|
|
|
|
- &::-webkit-input-placeholder,
|
|
|
|
- &:-moz-placeholder,
|
|
|
|
- &::-moz-placeholder,
|
|
|
|
- &:-ms-input-placeholder {
|
|
|
|
- color: rgba(255, 255, 255, 0.6);
|
|
|
|
- }
|
|
|
|
|
|
+ .form {
|
|
|
|
+ font-size: 14px;
|
|
|
|
+ font-weight: 400 !important;
|
|
|
|
+ padding: 11px 0;
|
|
|
|
|
|
|
|
+ .label {
|
|
|
|
+ min-width: 4em;
|
|
|
|
+ display: inline-block;
|
|
|
|
+ text-align: justify;
|
|
|
|
+ -moz-text-align-last: justify;
|
|
|
|
+ text-align-last: justify;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|