|
@@ -33,19 +33,44 @@
|
|
|
<!-- 姓名 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].nameContent }]" required
|
|
|
- v-model="from.name" :label="lang[langType].name" :placeholder="lang[langType].nameContent" />
|
|
|
+ v-model="from.name" :placeholder="lang[langType].nameContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].name"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
|
|
|
<!-- 拼音 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].pinyinContent }]"
|
|
|
- v-model="from.pinyin" :label="lang[langType].pinyin" required
|
|
|
- :placeholder="lang[langType].pinyinContent" />
|
|
|
+ v-model="from.pinyin" required :placeholder="lang[langType].pinyinContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].pinyin"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
|
|
|
<!-- 性别 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].genderContent }]"
|
|
|
- v-model="from.gender" :label="lang[langType].gender" required
|
|
|
- :placeholder="lang[langType].genderContent" />
|
|
|
+ v-model="from.gender" required :placeholder="lang[langType].genderContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].gender"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+
|
|
|
+ <!-- 照片 -->
|
|
|
+ <van-field label-width="7em" size="large" :placeholder="lang[langType].photoContent" required
|
|
|
+ :rules="[{ required: true, trigger: 'onChange', message: lang[langType].photoContent }]"
|
|
|
+ v-model="from.fileUrl">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].photo"></span>
|
|
|
+ </template>
|
|
|
+ <template #input>
|
|
|
+ <van-uploader :preview-full-image="false" accept="image/*" v-model="photo" :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 label-width="7em" size="large"
|
|
@@ -56,24 +81,33 @@
|
|
|
<!-- 邮箱 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emailContent }]" required
|
|
|
- v-model="from.email" :label="lang[langType].email" :placeholder="lang[langType].emailContent" />
|
|
|
-
|
|
|
- <!-- 工作单位 -->
|
|
|
- <van-field label-width="7em" size="large"
|
|
|
- :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].workUnit }]" required
|
|
|
- v-model="from.workUnit" :label="lang[langType].company"
|
|
|
- :placeholder="lang[langType].companyContent" />
|
|
|
+ v-model="from.email" :placeholder="lang[langType].emailContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].email"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
|
|
|
<!-- 生日 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].birthdayContent }]"
|
|
|
is-link readonly @click="showBirthday = true" v-model="from.birthday" required
|
|
|
- :label="lang[langType].birthday" :placeholder="lang[langType].birthdayContent" />
|
|
|
+ :placeholder="lang[langType].birthdayContent">
|
|
|
+ <template #label>
|
|
|
+ <span 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"
|
|
|
@cancal="showBirthday = false" :min-date="new Date(1970, 0, 1)" :max-date="new Date()" />
|
|
|
</van-popup>
|
|
|
|
|
|
+ <!-- 工作单位 -->
|
|
|
+ <van-field label-width="7em" size="large"
|
|
|
+ :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].workUnit }]" required
|
|
|
+ v-model="from.workUnit" :label="lang[langType].company"
|
|
|
+ :placeholder="lang[langType].companyContent" />
|
|
|
+
|
|
|
+
|
|
|
<!-- 国家/地区 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].CountryOrRegionContent }]"
|
|
@@ -83,8 +117,11 @@
|
|
|
<!-- 省市 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].provinceCityContent }]"
|
|
|
- v-model="from.provinceCity" :label="lang[langType].provinceCity" required
|
|
|
- :placeholder="lang[langType].provinceCityContent" />
|
|
|
+ v-model="from.provinceCity" required :placeholder="lang[langType].provinceCityContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].provinceCity"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
|
|
|
<!-- 单位类型 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
@@ -101,7 +138,11 @@
|
|
|
<!-- title 称谓 -->
|
|
|
<van-field label-width="7em" size="large" required
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].titleContent }]"
|
|
|
- v-model="from.title" :label="lang[langType].title" :placeholder="lang[langType].titleContent" />
|
|
|
+ v-model="from.title" :placeholder="lang[langType].titleContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].title"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
|
|
|
<!-- otherTitle 其他称谓 -->
|
|
|
<van-field label-width="7em" size="large" required
|
|
@@ -116,12 +157,21 @@
|
|
|
:placeholder="lang[langType].chineseNameContent" />
|
|
|
|
|
|
<!-- 身份证 -->
|
|
|
- <van-field label-width="7em" size="large"
|
|
|
+ <!-- <van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].idCardContent }]"
|
|
|
v-model="from.idCard" :label="lang[langType].idCard" required
|
|
|
- :placeholder="lang[langType].idCardContent" />
|
|
|
+ :placeholder="lang[langType].idCardContent" /> -->
|
|
|
+
|
|
|
+ <!-- 证件类型 -->
|
|
|
+ <van-field label-width="7em" size="large" v-model="from.cardTypeName" is-link readonly
|
|
|
+ :label="lang[langType].conferenceType" :placeholder="lang[langType].conferenceTypeContent"
|
|
|
+ @click="showCardType = true" required />
|
|
|
+ <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 label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].passportContent }]"
|
|
|
v-model="from.passport" :label="lang[langType].passport" required
|
|
@@ -140,16 +190,20 @@
|
|
|
:placeholder="lang[langType].diplomaticRankContent" />
|
|
|
|
|
|
<!-- 主要成就 -->
|
|
|
- <van-field label-width="7em" size="large" v-model="from.mainAchievements" rows="3" autosize
|
|
|
+ <van-field label-width="7em" size="large" v-model="from.mainAchievements"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].mainAchievementsContent }]"
|
|
|
- :label="lang[langType].mainAchievements" type="textarea" required
|
|
|
+ :label="lang[langType].mainAchievements" required
|
|
|
:placeholder="lang[langType].mainAchievementsContent" />
|
|
|
|
|
|
<!-- 职务 -->
|
|
|
- <van-field label-width="7em" size="large" v-model="from.career" :label="lang[langType].career"
|
|
|
+ <van-field label-width="7em" size="large" v-model="from.career"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].careerContent }]" required
|
|
|
- :placeholder="lang[langType].careerContent" />
|
|
|
-
|
|
|
+ :placeholder="lang[langType].careerContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].career"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
+ <div style="background-color: #F7F7F7;height: 10px;"></div>
|
|
|
<!-- 固话 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].fixedLineContent }]"
|
|
@@ -159,8 +213,11 @@
|
|
|
<!-- 传真 -->
|
|
|
<van-field label-width="7em" size="large"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].faxContent }]"
|
|
|
- v-model="from.fax" :label="lang[langType].fax" type="number" required
|
|
|
- :placeholder="lang[langType].faxContent" />
|
|
|
+ v-model="from.fax" type="number" required :placeholder="lang[langType].faxContent">
|
|
|
+ <template #label>
|
|
|
+ <span v-html="lang[langType].fax"></span>
|
|
|
+ </template>
|
|
|
+ </van-field>
|
|
|
|
|
|
<!-- 办公地址 -->
|
|
|
<van-field label-width="7em" size="large" v-model="from.officeAddress" rows="3" autosize required
|
|
@@ -168,24 +225,18 @@
|
|
|
:label="lang[langType].officeAddress" type="textarea"
|
|
|
:placeholder="lang[langType].officeAddressContent" />
|
|
|
|
|
|
- <!-- 照片 -->
|
|
|
- <van-field label-width="7em" size="large" :placeholder="lang[langType].photoContent" required
|
|
|
- :rules="[{ required: true, trigger: 'onChange', message: lang[langType].photoContent }]"
|
|
|
- v-model="from.fileUrl" :label="lang[langType].photo">
|
|
|
- <template #input>
|
|
|
- <van-uploader :preview-full-image="false" accept="image/*" v-model="photo" :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 label-width="7em" size="large" v-model="from.catering" rows="3" autosize
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].cateringContent }]"
|
|
|
:label="lang[langType].catering" type="textarea" required
|
|
|
:placeholder="lang[langType].cateringContent" />
|
|
|
|
|
|
+ <!-- 过敏源 -->
|
|
|
+ <van-field label-width="7em" size="large" v-model="from.allergen" rows="3" autosize
|
|
|
+ :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].allergenContent }]"
|
|
|
+ :label="lang[langType].allergen" type="textarea" required
|
|
|
+ :placeholder="lang[langType].allergenContent" />
|
|
|
+
|
|
|
<!-- 紧急联系人 -->
|
|
|
<van-field label-width="7em" size="large" v-model="from.emergencyContact"
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactContent }]"
|
|
@@ -214,6 +265,7 @@
|
|
|
<!-- 媒体类别 -->
|
|
|
<van-field label-width="7em" size="large" v-model="from.media" :label="lang[langType].media"
|
|
|
:placeholder="lang[langType].mediaContent" />
|
|
|
+ <div style="background-color: #F7F7F7;height: 10px;"></div>
|
|
|
|
|
|
<!-- 抵达中国航班 -->
|
|
|
<van-field label-width="7em" size="large" v-model="from.flight" :label="lang[langType].flight"
|
|
@@ -314,13 +366,6 @@
|
|
|
</van-popup>
|
|
|
<!-- <br /> -->
|
|
|
<!-- <h4 class="title" v-text="lang[langType].conference"></h4> -->
|
|
|
- <!-- <van-field label-width="7em" size="large" v-model="from.cardTypeName" is-link readonly
|
|
|
- :label="lang[langType].conferenceType" :placeholder="lang[langType].conferenceTypeContent"
|
|
|
- @click="showCardType = true" /> -->
|
|
|
- <!-- <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> -->
|
|
|
<!-- <br /> -->
|
|
|
<!-- <h4 class="title" v-text="lang[langType].orther"></h4> -->
|
|
|
<van-field label-width="7em" size="large" v-model="from.message" rows="3" autosize
|
|
@@ -345,14 +390,14 @@ import axios from 'axios';
|
|
|
import config from '@/config/index.js';
|
|
|
import soundbyteJpg from '../../assets/img/2025lameifenghui.png';
|
|
|
|
|
|
-import { getJoinType, saveData } from '@/api/2025.js';
|
|
|
+import { saveData } from '@/api/2025.js';
|
|
|
|
|
|
import langpkg from './lang.js';
|
|
|
|
|
|
let arrivalTime = []
|
|
|
const dateTimeColumns = computed(() => {
|
|
|
const now = new Date();
|
|
|
- const years = Array.from({ length: now.getFullYear() - 1970 }, (_, i) => {
|
|
|
+ const years = Array.from({ length: Number(now.getFullYear()) + 1 - 1970 }, (_, i) => {
|
|
|
const t = 1970 + i + ''
|
|
|
return {
|
|
|
text: t,
|
|
@@ -423,7 +468,7 @@ const langObjT = {
|
|
|
const lang = ref(langpkg);
|
|
|
const langType = ref(localStorage.getItem('langType') || 'zh');
|
|
|
// const showLange = ref(false);
|
|
|
-// const showCardType = ref(false);
|
|
|
+const showCardType = ref(false);
|
|
|
const showArrivalTime = ref(false);
|
|
|
const showTransferTime = ref(false);
|
|
|
const showReachTime = ref(false);
|
|
@@ -433,9 +478,14 @@ const showCheckInTime = ref(false);
|
|
|
const showCheckOutTime = ref(false);
|
|
|
|
|
|
// 展示表单
|
|
|
-const showForm = ref(false);
|
|
|
-
|
|
|
-const cardTypeList = ref([])
|
|
|
+const showForm = ref(true);
|
|
|
+
|
|
|
+const cardTypeList = ref([
|
|
|
+ { text: '身份证', value: '1' },
|
|
|
+ { text: '护照', value: '2' },
|
|
|
+ { text: '港澳居民通行证', value: '3' },
|
|
|
+ { text: '台湾居民通行证', value: '4' },
|
|
|
+])
|
|
|
const photo = ref([])
|
|
|
const isFile = () => {
|
|
|
return photo.value && photo.value.length;
|
|
@@ -461,14 +511,14 @@ const from = reactive({
|
|
|
|
|
|
onBeforeUpdate(() => { });
|
|
|
|
|
|
-getJoinType().then((res) => {
|
|
|
- cardTypeList.value = res.map((item) => {
|
|
|
- return {
|
|
|
- text: item.dictLabel,
|
|
|
- value: item.dictValue,
|
|
|
- }
|
|
|
- })
|
|
|
-})
|
|
|
+// getJoinType().then((res) => {
|
|
|
+// cardTypeList.value = res.map((item) => {
|
|
|
+// return {
|
|
|
+// text: item.dictLabel,
|
|
|
+// value: item.dictValue,
|
|
|
+// }
|
|
|
+// })
|
|
|
+// })
|
|
|
|
|
|
const filesize = () => showToast(lang.value[langType.value].fileSize);
|
|
|
|
|
@@ -501,13 +551,12 @@ const checkOutTimeConfirm = ({ selectedValues }) => {
|
|
|
showCheckOutTime.value = false;
|
|
|
from.checkOutTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
|
|
|
}
|
|
|
-
|
|
|
// 选择证件类型
|
|
|
-// const onConfirm = ({ selectedValues, selectedOptions }) => {
|
|
|
-// showCardType.value = false;
|
|
|
-// from.cardType = selectedValues;
|
|
|
-// from.cardTypeName = selectedOptions[0].text;
|
|
|
-// };
|
|
|
+const onConfirm = ({ selectedValues, selectedOptions }) => {
|
|
|
+ showCardType.value = false;
|
|
|
+ from.cardType = selectedValues;
|
|
|
+ from.cardTypeName = selectedOptions[0].text;
|
|
|
+};
|
|
|
|
|
|
const beforeRead = () => {
|
|
|
if (!isFile()) showToast(lang.value[langType.value].changePhono);
|
|
@@ -545,8 +594,6 @@ const onSubmit = () => {
|
|
|
showForm.value = true;
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
if (!isFile()) showToast(lang.value[langType.value].selectFile);
|
|
|
saveData({
|
|
|
name: from.name,
|
|
@@ -595,7 +642,8 @@ const onSubmit = () => {
|
|
|
departureTime: from.leavingTime,
|
|
|
checkInTime: from.checkInTime,
|
|
|
checkOutTime: from.checkOutTime,
|
|
|
- remarks: from.message
|
|
|
+ remarks: from.message,
|
|
|
+ cardType: from.cardType,
|
|
|
}).then(() => {
|
|
|
showToast(lang.value[langType.value].registration);
|
|
|
// 清空表单内容 from
|