liyongli 1 ماه پیش
والد
کامیت
292efb2f78
2فایلهای تغییر یافته به همراه573 افزوده شده و 110 حذف شده
  1. 476 91
      src/view/fenghui/index.vue
  2. 97 19
      src/view/fenghui/lang.js

+ 476 - 91
src/view/fenghui/index.vue

@@ -12,33 +12,153 @@
         </div> -->
         <van-image style="width: 100%;" :src="soundbyteJpg" />
         <br />
-        <div class="introduce">
-            <h4 class="text" v-text="lang[langType].forumTopic"> </h4>
-            <p class="text" v-text="lang[langType].forumTopicContent"></p>
-            <h4 class="text" v-text="lang[langType].wrestleMania"></h4>
-            <p class="text" v-text="lang[langType].wrestleManiaContent"></p>
-            <h4 class="text" v-text="lang[langType].venue"></h4>
-            <p class="text" v-text="lang[langType].venueContent"></p>
-            <h4 class="text" v-text="lang[langType].organization"></h4>
-            <div class="text" v-text="lang[langType].organizationSub1"></div>
-            <div class="text" v-text="lang[langType].organizationSub2"></div>
-            <h4 class="text" v-text="lang[langType].scale"></h4>
-            <div class="text" style="text-indent: 2em;" v-text="lang[langType].scaleContent"></div>
-        </div>
-        <br />
         <van-form @submit="onSubmit">
             <div class="submit">
                 <van-cell-group inset>
-                    <h4 class="title" v-text="lang[langType].basicInformation"></h4>
-                    <van-field label-width="7em"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].nameContent }]"
+                    <!-- <h4 class="title" v-text="lang[langType].basicInformation"></h4> -->
+                    <!-- 姓名 -->
+                    <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" />
-                    <van-field label-width="7em"
+
+                    <!-- 拼音 -->
+                    <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" />
+
+                    <!-- 性别 -->
+                    <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" />
+
+                    <!-- 手机号 -->
+                    <van-field label-width="7em" size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].genderContent }]"
+                        v-model="from.contact" :label="lang[langType].contact" type="number" required
+                        :placeholder="lang[langType].contactContent" />
+
+                    <!-- 邮箱 -->
+                    <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" />
+
+                    <!-- 生日 -->
+                    <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" />
+                    <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].CountryOrRegionContent }]"
+                        v-model="from.CountryOrRegion" :label="lang[langType].CountryOrRegion" required
+                        :placeholder="lang[langType].CountryOrRegionContent" />
+
+                    <!-- 省市 -->
+                    <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" />
+
+                    <!-- 单位类型 -->
+                    <van-field label-width="7em" size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].unitTypeContent }]"
+                        v-model="from.unitType" :label="lang[langType].unitType" required
+                        :placeholder="lang[langType].unitTypeContent" />
+
+                    <!-- jobLevel 职务级别 -->
+                    <van-field label-width="7em" size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].jobLevelContent }]"
+                        v-model="from.jobLevel" :label="lang[langType].jobLevel" required
+                        :placeholder="lang[langType].jobLevelContent" />
+
+                    <!-- 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" />
+
+                    <!-- otherTitle 其他称谓 -->
+                    <van-field label-width="7em" size="large" required
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].otherTitleContent }]"
+                        v-model="from.otherTitle" :label="lang[langType].otherTitle"
+                        :placeholder="lang[langType].otherTitleContent" />
+
+                    <!-- chineseName 中文名 -->
+                    <van-field label-width="7em" size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].chineseNameContent }]"
+                        v-model="from.chineseName" :label="lang[langType].chineseName" required
+                        :placeholder="lang[langType].chineseNameContent" />
+
+                    <!-- 身份证 -->
+                    <van-field label-width="7em" size="large"
                         :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].idCardContent }]"
-                        v-model="from.idCard" :label="lang[langType].idCard"
+                        v-model="from.idCard" :label="lang[langType].idCard" required
                         :placeholder="lang[langType].idCardContent" />
-                    <van-field label-width="7em" :placeholder="lang[langType].photoContent"
-                        :label="lang[langType].photo">
+
+                    <!-- 护照 -->
+                    <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
+                        :placeholder="lang[langType].passportContent" />
+
+                    <!-- 宗教 -->
+                    <van-field label-width="7em" size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].beliefContent }]"
+                        v-model="from.belief" :label="lang[langType].belief" required
+                        :placeholder="lang[langType].beliefContent" />
+
+                    <!-- 外交职衔 -->
+                    <van-field label-width="7em" size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].diplomaticRankContent }]"
+                        v-model="from.diplomaticRank" :label="lang[langType].diplomaticRank" required
+                        :placeholder="lang[langType].diplomaticRankContent" />
+
+                    <!-- 主要成就 -->
+                    <van-field label-width="7em" size="large" v-model="from.mainAchievements" rows="3" autosize
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].mainAchievementsContent }]"
+                        :label="lang[langType].mainAchievements" type="textarea" required
+                        :placeholder="lang[langType].mainAchievementsContent" />
+
+                    <!-- 职务 -->
+                    <van-field label-width="7em" size="large" v-model="from.career" :label="lang[langType].career"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].careerContent }]" required
+                        :placeholder="lang[langType].careerContent" />
+
+                    <!-- 固话 -->
+                    <van-field label-width="7em" size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].fixedLineContent }]"
+                        v-model="from.fixedLine" :label="lang[langType].fixedLine" type="number" required
+                        :placeholder="lang[langType].fixedLineContent" />
+
+                    <!-- 传真 -->
+                    <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" />
+
+                    <!-- 办公地址 -->
+                    <van-field label-width="7em" size="large" v-model="from.officeAddress" rows="3" autosize required
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].officeAddressContent }]"
+                        :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">
@@ -46,30 +166,170 @@
                             <p style="font-size: 12px;" v-text="lang[langType].photoSubContent"> </p>
                         </template>
                     </van-field>
-                    <van-field label-width="7em" v-model="from.nationality" :label="lang[langType].nationality"
-                        :placeholder="lang[langType].nationalityContent" />
-                    <van-field label-width="7em" v-model="from.company" :label="lang[langType].company"
-                        :placeholder="lang[langType].companyContent" />
-                    <van-field label-width="7em" v-model="from.career" :label="lang[langType].career"
-                        :placeholder="lang[langType].careerContent" />
-                    <van-field label-width="7em" v-model="from.contact" :label="lang[langType].contact"
-                        :placeholder="lang[langType].contactContent" />
-                    <br />
-                    <h4 class="title" v-text="lang[langType].conference"></h4>
-                    <van-field label-width="7em" v-model="from.cardTypeName" is-link readonly
+
+                    <!-- 饮食要求 -->
+                    <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.emergencyContact"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactContent }]"
+                        :label="lang[langType].emergencyContact" required
+                        :placeholder="lang[langType].emergencyContactContent" />
+
+                    <!-- 紧急联系人电话 -->
+                    <van-field label-width="7em" size="large" v-model="from.emergencyContactPhone" required
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactPhoneContent }]"
+                        :label="lang[langType].emergencyContactPhone"
+                        :placeholder="lang[langType].emergencyContactPhoneContent" />
+
+                    <!-- 接受采访意向  -->
+                    <van-field label-width="7em" size="large" v-model="from.interview" :label="lang[langType].interview"
+                        required
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].interviewContent }]"
+                        :placeholder="lang[langType].interviewContent">
+                        <template #input>
+                            <van-radio-group v-model="from.interview" direction="horizontal">
+                                <van-radio name="同意">同意</van-radio>
+                                <van-radio name="拒绝">拒绝</van-radio>
+                            </van-radio-group>
+                        </template>
+                    </van-field>
+
+                    <!-- 媒体类别 -->
+                    <van-field label-width="7em" size="large" v-model="from.media" :label="lang[langType].media"
+                        :placeholder="lang[langType].mediaContent" />
+
+                    <!-- 抵达中国航班 -->
+                    <van-field label-width="7em" size="large" v-model="from.flight" :label="lang[langType].flight"
+                        :placeholder="lang[langType].flightContent" />
+
+                    <!-- 抵达中国地点 -->
+                    <van-field label-width="7em" size="large" v-model="from.arrivalLocation"
+                        :label="lang[langType].arrivalLocation" :placeholder="lang[langType].arrivalLocationContent" />
+
+                    <!-- 抵达中国时间 -->
+                    <van-field label-width="7em" size="large" v-model="from.arrivalTime" is-link readonly
+                        @click="showArrivalTime = true" :label="lang[langType].arrivalTime"
+                        :placeholder="lang[langType].arrivalTimeContent" />
+                    <van-popup v-model:show="showArrivalTime" destroy-on-close round position="bottom">
+                        <van-picker :title="lang[langType].arrivalTime" :columns="dateTimeColumns"
+                            @confirm="handleConfirm" @calcan="showArrivalTime = false" />
+                    </van-popup>
+
+                    <!-- 中转交通方式 -->
+                    <van-field label-width="7em" size="large" v-model="from.transfer" :label="lang[langType].transfer"
+                        :placeholder="lang[langType].transferContent" />
+
+                    <!--  中转时间 -->
+                    <van-field label-width="7em" size="large" v-model="from.transferTime"
+                        @click="showTransferTime = true" is-link readonly :label="lang[langType].transferTime"
+                        :placeholder="lang[langType].transferTimeContent" />
+                    <van-popup v-model:show="showTransferTime" destroy-on-close round position="bottom">
+                        <van-picker :title="lang[langType].arrivalTime" :columns="dateTimeColumns"
+                            @confirm="transferTimeConfirm" @calcan="showTransferTime = false" />
+                    </van-popup>
+
+
+                    <!--  抵达西安交通方式 -->
+                    <van-field label-width="7em" size="large" v-model="from.reach" :label="lang[langType].reach"
+                        :placeholder="lang[langType].reachContent" />
+
+                    <!--  抵达西安交通车次 -->
+                    <van-field label-width="7em" size="large" v-model="from.reachTrainNumber"
+                        :label="lang[langType].reachTrainNumber"
+                        :placeholder="lang[langType].reachTrainNumberContent" />
+
+                    <!--  抵达西安地点 -->
+                    <van-field label-width="7em" size="large" v-model="from.reachLocation"
+                        :label="lang[langType].reachLocation" :placeholder="lang[langType].reachLocationContent" />
+
+                    <!--  抵达西安时间 -->
+                    <van-field label-width="7em" size="large" v-model="from.reachTime" is-link readonly
+                        @click="showReachTime = true" :label="lang[langType].reachTime"
+                        :placeholder="lang[langType].reachTimeContent" />
+                    <van-popup v-model:show="showReachTime" destroy-on-close round position="bottom">
+                        <van-picker :title="lang[langType].reachTime" :columns="dateTimeColumns"
+                            @confirm="reachTimeConfirm" @calcan="showReachTime = false" />
+                    </van-popup>
+
+                    <!-- 接站地点 -->
+                    <van-field label-width="7em" size="large" v-model="from.pickUpLocation"
+                        :label="lang[langType].pickUpLocation" :placeholder="lang[langType].pickUpLocationContent" />
+
+                    <!-- 离开交通方式 -->
+                    <van-field label-width="7em" size="large" v-model="from.leavingTransportationMode"
+                        :label="lang[langType].leavingTransportationMode"
+                        :placeholder="lang[langType].leavingTransportationModeContent" />
+
+                    <!--  离开车次 -->
+                    <van-field label-width="7em" size="large" v-model="from.leavingTrainNumber"
+                        :label="lang[langType].leavingTrainNumber"
+                        :placeholder="lang[langType].leavingTrainNumberContent" />
+
+                    <!--  离开地点 -->
+                    <van-field label-width="7em" size="large" v-model="from.leavingLocation"
+                        :label="lang[langType].leavingLocation" :placeholder="lang[langType].leavingLocationContent" />
+
+                    <!--  离开时间 -->
+                    <van-field label-width="7em" size="large" v-model="from.leavingTime" is-link readonly
+                        @click="showLeavingTime = true" :label="lang[langType].leavingTime"
+                        :placeholder="lang[langType].leavingTimeContent" />
+                    <van-popup v-model:show="showLeavingTime" destroy-on-close round position="bottom">
+                        <van-picker :title="lang[langType].leavingTime" :columns="dateTimeColumns"
+                            @confirm="leavingTimeConfirm" @calcan="showLeavingTime = false" />
+                    </van-popup>
+
+                    <!--  入住时间 -->
+                    <van-field label-width="7em" size="large" v-model="from.checkInTime" is-link readonly
+                        @click="showCheckInTime = true" :label="lang[langType].checkInTime"
+                        :placeholder="lang[langType].checkInTimeContent" />
+                    <van-popup v-model:show="showCheckInTime" destroy-on-close round position="bottom">
+                        <van-picker :title="lang[langType].checkInTime" :columns="dateTimeColumns"
+                            @confirm="checkInTimeConfirm" @calcan="showCheckInTime = false" />
+                    </van-popup>
+
+                    <!--  离店时间 -->
+                    <van-field label-width="7em" size="large" v-model="from.checkOutTime" is-link readonly
+                        @click="showCheckOutTime = true" :label="lang[langType].checkOutTime"
+                        :placeholder="lang[langType].checkOutTimeContent" />
+                    <van-popup v-model:show="showCheckOutTime" destroy-on-close round position="bottom">
+                        <van-picker :title="lang[langType].checkOutTime" :columns="dateTimeColumns"
+                            @confirm="checkOutTimeConfirm" @calcan="showCheckOutTime = false" />
+                    </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">
+                        @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" v-model="from.message" rows="3" autosize
+                    </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
                         :label="lang[langType].ortherNotes" type="textarea"
                         :placeholder="lang[langType].ortherNotesContent" />
                 </van-cell-group>
             </div>
+
+            <br />
+            <div class="introduce">
+                <h4 class="text" v-text="lang[langType].forumTopic"> </h4>
+                <p class="text" v-text="lang[langType].forumTopicContent"></p>
+                <h4 class="text" v-text="lang[langType].wrestleMania"></h4>
+                <p class="text" v-text="lang[langType].wrestleManiaContent"></p>
+                <h4 class="text" v-text="lang[langType].venue"></h4>
+                <p class="text" v-text="lang[langType].venueContent"></p>
+                <h4 class="text" v-text="lang[langType].organization"></h4>
+                <div class="text" v-text="lang[langType].organizationSub1"></div>
+                <div class="text" v-text="lang[langType].organizationSub2"></div>
+                <h4 class="text" v-text="lang[langType].scale"></h4>
+                <div class="text" style="text-indent: 2em;" v-text="lang[langType].scaleContent"></div>
+            </div>
             <van-button class="btn_bottom" block type="primary" native-type="submit">
                 {{ lang[langType].submit }}
             </van-button>
@@ -79,7 +339,7 @@
 </template>
 <script setup>
 // import { onMounted, reactive } from "vue";
-import { ref, reactive, onBeforeUpdate } from 'vue';
+import { ref, reactive, onBeforeUpdate, computed } from 'vue';
 import { showToast } from 'vant';
 import axios from 'axios';
 import config from '@/config/index.js';
@@ -88,14 +348,70 @@ import soundbyteJpg from '../../assets/img/2025lameifenghui.png';
 import { getJoinType, saveData } from '@/api/2025.js';
 
 import langpkg from './lang.js';
-const langObj = [
+
+let arrivalTime = []
+const dateTimeColumns = computed(() => {
+    const now = new Date();
+    const years = Array.from({ length: now.getFullYear() - 1970 }, (_, i) => {
+        const t = 1970 + i + ''
+        return {
+            text: t,
+            value: t
+        }
+    }).reverse();
+    const months = 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 = Array.from({ length: daysInMonth }, (_, i) => {
+        const d = (i + 1).toString().padStart(2, '0')
+        return {
+            text: d,
+            value: d
+        }
+    });
+
+    const hours = Array.from({ length: 24 }, (_, i) => {
+        const h = i.toString().padStart(2, '0')
+        return {
+            text: h,
+            value: h
+        }
+    });
+    const minutes = Array.from({ length: 60 }, (_, i) => {
+        const m = i.toString().padStart(2, '0')
+        return {
+            text: m,
+            value: m
+        }
+    });
+    const seconds = Array.from({ length: 60 }, (_, i) => {
+        const s = i.toString().padStart(2, '0')
+        return {
+            text: s,
+            value: s
+        }
+    });
+    return [years, months, days, hours, minutes, seconds];
+});
+/** const langObj = [
     { text: '中文', value: 'zh' },
     { text: 'English', value: 'en' },
 ]
 const langObjT = {
     zh: '中文',
     en: 'English',
-}
+} */
 
 // import en from './en.json';
 /**
@@ -106,30 +422,38 @@ const langObjT = {
 
 const lang = ref(langpkg);
 const langType = ref(localStorage.getItem('langType') || 'zh');
-const showLange = ref(false);
-const showCardType = ref(false);
+// const showLange = ref(false);
+// const showCardType = ref(false);
+const showArrivalTime = ref(false);
+const showTransferTime = ref(false);
+const showReachTime = ref(false);
+const showLeavingTime = ref(false);
+const showBirthday = ref(false);
+const showCheckInTime = ref(false);
+const showCheckOutTime = ref(false);
+
 const cardTypeList = ref([])
 const photo = ref([])
 const isFile = () => {
     return photo.value && photo.value.length;
 };
-const langChange = ({ selectedValues }) => {
-    langType.value = selectedValues[0];
-    localStorage.setItem('langType', selectedValues[0]);
-    showLange.value = false;
-};
+// const langChange = ({ selectedValues }) => {
+//     langType.value = selectedValues[0];
+//     localStorage.setItem('langType', selectedValues[0]);
+//     showLange.value = false;
+// };
 
 const from = reactive({
     name: '',
     idCard: '',
-    nationality: '',
-    company: '',
     career: '',
     contact: '',
     photoUrl: [],
     cardType: [],
     photo: [],
-    message: ''
+    birthday: '',
+    message: '',
+    arrivalTime: ''
 });
 
 onBeforeUpdate(() => { });
@@ -145,12 +469,42 @@ getJoinType().then((res) => {
 
 const filesize = () => showToast(lang.value[langType.value].fileSize);
 
+const packerConfirm = (values) => {
+    showBirthday.value = false;
+    from.birthday = values.selectedValues.join('-');
+}
+const handleConfirm = ({ selectedValues }) => {
+    showArrivalTime.value = false;
+    arrivalTime = selectedValues;
+    from.arrivalTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
+}
+const transferTimeConfirm = ({ selectedValues }) => {
+    showTransferTime.value = false;
+    from.transferTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
+}
+const reachTimeConfirm = ({ selectedValues }) => {
+    showReachTime.value = false;
+    from.reachTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
+}
+const leavingTimeConfirm = ({ selectedValues }) => {
+    showLeavingTime.value = false;
+    from.leavingTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
+}
+const checkInTimeConfirm = ({ selectedValues }) => {
+    showCheckInTime.value = false;
+    from.checkInTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
+}
+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);
@@ -165,20 +519,20 @@ const beforeRead = () => {
         },
         data: oriData,
     }).then(res => {
-            if (res.status !== 200 || res.data.code !== 0) {
-                showToast(lang.value[langType.value].upFileError);
-                from.photoUrl = []
-                return
+        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 = [{ url: res.data.data }]
+        photo.value = [
+            {
+                url: res.data.data,
+                file: item.file,
             }
-            showToast(lang.value[langType.value].upFileSusscess);
-            from.photoUrl = [{ url: res.data.data }]
-            photo.value = [
-                {
-                    url: res.data.data,
-                    file: item.file,
-                }
-            ]
-        })
+        ]
+    })
     return false;
 };
 
@@ -187,28 +541,59 @@ const onSubmit = (values) => {
     console.log('submit', values);
     if (!isFile()) showToast(lang.value[langType.value].selectFile);
     saveData({
-        "name": from.name,
-        "photo": from.photoUrl[0].url,
-        "nationality": from.nationality,
-        "passportOrId": from.idCard,
-        "contact": from.contact,
-        "position": from.career,
-        "company": from.company,
-        "participationType": from.cardType.join(','),
-        "remarks": from.message
+        name: from.name,
+        photo: from.photoUrl[0].url,
+        namePinyin: from.pinyin,
+        gender: from.gender,
+        phone: from.contact,
+        email: from.email,
+        birthday: from.birthday,
+        workUnit: from.workUnit,
+        countryRegion: from.CountryOrRegion,
+        provinceCity: from.provinceCity,
+        unitType: from.unitType,
+        jobLevel: from.jobLevel,
+        title: from.title,
+        otherTitle: from.otherTitle,
+        chineseName: from.chineseName,
+        idCard: from.idCard,
+        passportNumber: from.passport,
+        religion: from.belief,
+        diplomaticRank: from.diplomaticRank,
+        majorAchievements: from.mainAchievements,
+        position: from.career,
+        telephone: from.fixedLine,
+        fax: from.fax,
+        officeAddress: from.officeAddress,
+        dietaryRequirements: from.catering,
+        allergen: from.allergies,
+        emergencyContact: from.emergencyContact,
+        emergencyContactPhone: from.emergencyContactPhone,
+        interviewIntention: from.interview,
+        mediaCategory: from.media,
+        arrivalFlightChina: from.flight,
+        arrivalLocationChina: from.arrivalLocation,
+        arrivalTimeChina: from.arrivalTime,
+        transferMode: from.transfer,
+        transferTime: from.transferTime,
+        arrivalModeXian: from.reach,
+        arrivalNumberXian: from.reachTrainNumber,
+        arrivalLocationXian: from.reachLocation,
+        arrivalTimeXian: from.reachTime,
+        pickupLocation: from.pickUpLocation,
+        departureMode: from.leavingTransportationMode,
+        departureNumber: from.leavingTrainNumber,
+        departureLocation: from.leavingLocation,
+        departureTime: from.leavingTime,
+        checkInTime: from.checkInTime,
+        checkOutTime: from.checkOutTime,
+        remarks: from.message
     }).then(() => {
         showToast(lang.value[langType.value].registration);
-        // 清空表单内容
-        from.name = '';
-        from.idCard = '';
-        from.nationality = '';
-        from.company = '';
-        from.career = '';
-        from.photoUrl = []
-        from.contact = '';
-        from.cardType = [];
-        photo.value = [];
-        from.message = '';
+        // 清空表单内容 from
+        Object.keys(from).forEach((key) => {
+            from[key] = '';
+        });
     }).catch(() => {
         showToast(lang.value[langType.value].registrationError);
     });
@@ -244,8 +629,8 @@ const onSubmit = (values) => {
     .text {
         padding: 8px 8px 0 8px;
         text-align: justify;
-        line-height: 1.5em;
-        font-size: 14px;
+        line-height: 1.8em;
+        font-size: 16px;
         color: #3D3D3D;
     }
 

+ 97 - 19
src/view/fenghui/lang.js

@@ -14,25 +14,31 @@ export default {
         "basicInformation": "个人基本信息",
         "name": "姓名",
         "nameContent": "请输入姓名(中英文名称,必填)",
-        "idCard": "身份证/护照号",
-        "idCardContent": "请输入身份证/护照号(必填)",
-        "nationalityContent": "请输入国籍",
-        "nationality": "国籍",
-        "company": "公司/机构名称",
-        "companyContent": "公司/机构名称",
-        "career": "职业",
-        "careerContent": "请输入职业/职务",
-        "contact": "联系方式",
-        "contactContent": "请输入联系方式",
+        "idCard": "身份证",
+        "idCardContent": "请输入身份证",
+        "career": "职务",
+        "careerContent": "请输入职务",
+        "contact": "手机号",
+        "contactContent": "请输入手机号",
+        "company": "单位/机构",
+        "companyContent": "请输入单位/机构",
         "photo": "照片",
         "photoContent": "请选择照片",
         "photoSubContent": "支持上传jpg,png等格式的图片,大小100M以内",
         "conference": "参会信息",
         "conferenceType": "参会类型",
         "conferenceTypeContent": "请选择参会类型",
+        "unitType": "单位类型",
+        "unitTypeContent": "请选择单位类型",
+        "jobLevel": "职务级别",
+        "jobLevelContent": "请选择职务级别",
+        "otherTitle": "其他称谓",
+        "otherTitleContent": "请输入其他称谓",
+        "chineseName": "中文名",
+        "chineseNameContent": "请输入中文名",
         "orther": "其他材料",
         "ortherNotes": "备注",
-        "ortherNotesContent": "特殊需求(如无障碍设施、饮食禁忌等)",
+        "ortherNotesContent": "特殊需求",
         "submit": "提交申请",
         "copyright": "由陕西广电融媒体集团技术研究院提供计算服务",
         "fileSize": "超出文件大小限制",
@@ -42,6 +48,80 @@ export default {
         "selectFile": "请选择照片",
         "registration": "报名成功",
         "registrationError": "报名失败",
+
+        
+        "pinyin": "拼音",
+        "pinyinContent": "请输入拼音",
+        "gender": "性别",
+        "genderContent": "请输入性别",
+        "email": "邮箱",
+        "emailContent": "请输入邮箱",
+        "birthday": "生日",
+        "birthdayContent": "请输入生日",
+        "CountryOrRegion": "国家/地区",
+        "CountryOrRegionContent": "请输入国家/地区",
+        "provinceCity": "省市",
+        "provinceCityContent": "请输入省市",
+        "passportContent": "证件号码不能为空",
+        "passport": "护照号码/港澳居民通行证号码/台湾居民通行证号码",
+        "belief": "宗教信仰",
+        "beliefContent": "请输入宗教信仰",
+        "title": "称谓",
+        "titleContent": "请输入称谓",
+        "diplomaticRank": "外交职衔 ",
+        "diplomaticRankContent": "请输入外交职衔",
+        "mainAchievements": "主要成就",
+        "mainAchievementsContent": "请输入主要成就",
+        "fixedLine": "固定电话",
+        "fixedLineContent": "请输入固定电话",
+        "fax": "传真",
+        "faxContent": "请输入传真",
+        "officeAddress": "办公地址",
+        "officeAddressContent": "请输入办公地址",
+        "catering": "饮食要求",
+        "cateringContent": "请输入饮食要求",
+        "allergen": "过敏源",
+        "allergenContent": "请输入过敏源",
+        "emergencyContact": "紧急联系人",
+        "emergencyContactContent": "请输入紧急联系人",
+        "emergencyContactPhone": "紧急联系人电话",
+        "emergencyContactPhoneContent": "请输入紧急联系人电话",
+        "interview": "接受采访意向",
+        "interviewContent": "请选择接受采访意向",
+        "media": "媒体类别",
+        "mediaContent": "请选择媒体类别",
+        "flight": "航班信息",
+        "flightContent": "请输入航班信息",
+        "arrivalLocation": "到达中国地点",
+        "arrivalLocationContent": "请输入到达中国地点",
+        "arrivalTime": "到达中国时间",
+        "arrivalTimeContent": "请输入到达中国时间",
+        "transfer": "中转交通",
+        "transferContent": "请输入中转交通方式",
+        "transferTime": "中转时间",
+        "transferTimeContent": "请输入中转时间",
+        "reach": "到达西安方式",
+        "reachContent": "请输入到达西安交通方式",
+        "reachTrainNumber": "到达车次",
+        "reachTrainNumberContent": "请输入到达车次/航班/车牌号",
+        "reachLocation": "到达西安地点",
+        "reachLocationContent": "请输入到达西安地点",
+        "reachTime": "到达西安时间",
+        "reachTimeContent": "请输入到达西安时间",
+        "leavingTransportationMode": "离开交通方式",
+        "leavingTransportationModeContent": "请输入离开交通方式",
+        "leavingTrainNumber": "离开车次",
+        "leavingTrainNumberContent": "请输入离开车次/航班/车牌号",
+        "leavingLocation": "离开地点",
+        "leavingLocationContent": "请输入离开地点",
+        "leavingTime": "离开时间",
+        "leavingTimeContent": "请输入离开时间",
+        "checkInTime": "入住时间",
+        "checkInTimeContent": "请输入入住时间",
+        "checkOutTime": "退房时间",
+        "checkOutTimeContent": "请输入退房时间",
+        "pickUpLocation": "接站地点",
+        "pickUpLocationContent": "请输入接站地点",
     },
     "en": {
         "forumTopic": "Forum Theme",
@@ -58,16 +138,14 @@ export default {
         "basicInformation": "Personal Information",
         "name": "Name",
         "nameContent": "Full name (in Chinese/English, required)",
-        "idCard": "ID/Passport No.",
-        "idCardContent": "ID/Passport number (required)",
-        "nationalityContent": "Nationality",
-        "nationality": "Nationality",
+        "idCard": "IDCard",
+        "idCardContent": "ID card number",
         "company": "Company/Institution",
         "companyContent": "Company/Institution name",
         "career": "Profession",
-        "careerContent": "Job title/Position",
-        "contact": "Contact",
-        "contactContent": "Contact information",
+        "careerContent": "Job Position",
+        "contact": "Phone Number",
+        "contactContent": "Phone Number information",
         "photo": "Photo",
         "photoContent": "Upload photo",
         "photoSubContent": "Supports JPG/PNG (max 100MB)",
@@ -76,7 +154,7 @@ export default {
         "conferenceTypeContent": "Select participation type",
         "orther": "Other Materials",
         "ortherNotes": "Notes",
-        "ortherNotesContent": "Special requests (e.g. accessibility/dietary requirements)",
+        "ortherNotesContent": "Special requests",
         "submit": "Submit Application",
         "copyright": "Computing services provided by Shaanxi Radio & TV Media Group Technology Institute",
         "fileSize": "Exceeding file size limit",