liyongli пре 1 месец
родитељ
комит
f4356824f0
2 измењених фајлова са 285 додато и 380 уклоњено
  1. 255 326
      src/view/fenghui/index.vue
  2. 30 54
      src/view/fenghui/lang.js

+ 255 - 326
src/view/fenghui/index.vue

@@ -12,44 +12,104 @@
         </div> -->
         <van-image style="width: 100%;" :src="soundbyteJpg" />
         <br />
-        <van-form @submit="onSubmit">
+        <van-form label-width="8em" @submit="onSubmit">
             <div class="submit">
                 <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>
+                    <p class="text" v-html="lang[langType].wrestleManiaContent"></p>
                     <h4 class="text" v-text="lang[langType].venue"></h4>
-                    <p class="text" v-text="lang[langType].venueContent"></p>
+                    <p class="text" v-html="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>
+                    <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 size="large" v-model="from.countryOrRegion" is-link 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 label-width="9em" size="large"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].nameContent }]" required
-                        v-model="from.name" :placeholder="lang[langType].nameContent">
+                    <van-field label-align="center" 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 label-width="9em" size="large"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].pinyinContent }]"
-                        v-model="from.pinyin" required :placeholder="lang[langType].pinyinContent">
+
+                    <!-- 省市 -->
+                    <van-field 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 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 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].pinyin"></span>
+                            <span class="label" v-html="lang[langType].firstName"></span>
                         </template>
                     </van-field>
 
+                    <!-- 国家/地区 -->
+                    <van-field 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 label-width="9em" size="large"
+                    <van-field size="large"
                         :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].genderContent }]"
                         v-model="from.gender" required :placeholder="lang[langType].genderContent">
                         <template #label>
@@ -57,10 +117,24 @@
                         </template>
                     </van-field>
 
+                    <!-- 生日 -->
+                    <van-field size="large"
+                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].birthdayContent }]"
+                        is-link 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"
+                            @cancal="showBirthday = false" :min-date="new Date(1970, 0, 1)" :max-date="new Date()" />
+                    </van-popup>
+
                     <!-- 照片 -->
-                    <van-field label-width="9em" size="large" :placeholder="lang[langType].photoContent" required
+                    <van-field size="large" :placeholder="lang[langType].photoContent" required
                         :rules="[{ required: true, trigger: 'onChange', message: lang[langType].photoContent }]"
-                        v-model="from.fileUrl">
+                        v-model="from.photoUrl">
                         <template #label>
                             <span class="label" v-html="lang[langType].photo"></span>
                         </template>
@@ -73,13 +147,16 @@
                     </van-field>
 
                     <!-- 手机号 -->
-                    <van-field label-width="9em" size="large"
+                    <van-field 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" />
+                        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 label-width="9em" size="large"
+                    <van-field size="large"
                         :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emailContent }]" required
                         v-model="from.email" :placeholder="lang[langType].emailContent">
                         <template #label>
@@ -87,131 +164,94 @@
                         </template>
                     </van-field>
 
-                    <!-- 生日 -->
-                    <van-field label-width="9em" size="large"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].birthdayContent }]"
-                        is-link readonly @click="showBirthday = true" v-model="from.birthday" required
-                        :placeholder="lang[langType].birthdayContent">
+                    <!-- 紧急联系人 -->
+                    <van-field 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].birthday"></span>
+                            <span class="label" v-html="lang[langType].emergencyContact"></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="9em" 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="9em" 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="9em" size="large"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].provinceCityContent }]"
-                        v-model="from.provinceCity" required :placeholder="lang[langType].provinceCityContent">
+                    <!-- 紧急联系人电话 -->
+                    <van-field 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].provinceCity"></span>
+                            <span class="label" v-html="lang[langType].emergencyContactPhone"></span>
                         </template>
                     </van-field>
 
-                    <!-- 单位类型 -->
-                    <van-field label-width="9em" 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="9em" 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="9em" size="large" required
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].titleContent }]"
-                        v-model="from.title" :placeholder="lang[langType].titleContent">
+                    <!-- 证件类型 -->
+                    <van-field size="large" v-model="from.cardTypeName" is-link readonly
+                        :placeholder="lang[langType].conferenceTypeContent" @click="showCardType = true" required>
                         <template #label>
-                            <span class="label" v-html="lang[langType].title"></span>
+                            <span class="label" v-html="lang[langType].conferenceType"></span>
                         </template>
                     </van-field>
-
-                    <!-- otherTitle 其他称谓 -->
-                    <van-field label-width="9em" 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="9em" 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="9em" size="large"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].idCardContent }]"
-                        v-model="from.idCard" :label="lang[langType].idCard" required
-                        :placeholder="lang[langType].idCardContent" /> -->
-
-                    <!-- 证件类型 -->
-                    <van-field label-width="9em" 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="9em" size="large"
+                    <van-field size="large"
                         :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].passportContent }]"
-                        v-model="from.passport" :label="lang[langType].passport" required
-                        :placeholder="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 label-width="9em" size="large"
+                    <van-field size="large"
                         :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].beliefContent }]"
-                        v-model="from.belief" :label="lang[langType].belief" required
-                        :placeholder="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 label-width="9em" 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 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 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 label-width="9em" size="large" v-model="from.mainAchievements"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].mainAchievementsContent }]"
-                        :label="lang[langType].mainAchievements" required
-                        :placeholder="lang[langType].mainAchievementsContent" />
+                    <!-- 单位类型 -->
+                    <van-field 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 label-width="9em" size="large" v-model="from.career"
+                    <van-field 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>
-                    <div style="background-color: #F7F7F7;height: 10px;"></div>
-                    <!-- 固话 -->
-                    <van-field label-width="9em" 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="9em" size="large"
+                    <van-field size="large"
                         :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].faxContent }]"
                         v-model="from.fax" type="number" required :placeholder="lang[langType].faxContent">
                         <template #label>
@@ -220,156 +260,89 @@
                     </van-field>
 
                     <!-- 办公地址 -->
-                    <van-field label-width="9em" size="large" v-model="from.officeAddress" rows="3" autosize required
+                    <van-field 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="9em" 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="9em" 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="9em" size="large" v-model="from.emergencyContact"
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactContent }]"
-                        :label="lang[langType].emergencyContact" required
-                        :placeholder="lang[langType].emergencyContactContent" />
+                        type="textarea" :placeholder="lang[langType].officeAddressContent">
+                        <template #label>
+                            <span class="label" v-html="lang[langType].officeAddress"></span>
+                        </template>
+                    </van-field>
 
-                    <!-- 紧急联系人电话 -->
-                    <van-field label-width="9em" size="large" v-model="from.emergencyContactPhone" required
-                        :rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactPhoneContent }]"
-                        :label="lang[langType].emergencyContactPhone"
-                        :placeholder="lang[langType].emergencyContactPhoneContent" />
+                    <div style="background-color: #F7F7F7;height: 10px;"></div>
 
                     <!-- 接受采访意向  -->
-                    <van-field label-width="9em" size="large" v-model="from.interview" :label="lang[langType].interview"
-                        required
+                    <van-field 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 v-model="from.interview" direction="horizontal">
+                            <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>
 
-                    <!-- 媒体类别 -->
-                    <van-field label-width="9em" 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="9em" size="large" v-model="from.flight" :label="lang[langType].flight"
-                        :placeholder="lang[langType].flightContent" />
-
-                    <!-- 抵达中国地点 -->
-                    <van-field label-width="9em" size="large" v-model="from.arrivalLocation"
-                        :label="lang[langType].arrivalLocation" :placeholder="lang[langType].arrivalLocationContent" />
-
-                    <!-- 抵达中国时间 -->
-                    <van-field label-width="9em" 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="9em" size="large" v-model="from.transfer" :label="lang[langType].transfer"
-                        :placeholder="lang[langType].transferContent" />
-
-                    <!--  中转时间 -->
-                    <van-field label-width="9em" 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="9em" size="large" v-model="from.reach" :label="lang[langType].reach"
-                        :placeholder="lang[langType].reachContent" />
-
                     <!--  抵达西安交通车次 -->
-                    <van-field label-width="9em" size="large" v-model="from.reachTrainNumber"
-                        :label="lang[langType].reachTrainNumber"
-                        :placeholder="lang[langType].reachTrainNumberContent" />
-
-                    <!--  抵达西安地点 -->
-                    <van-field label-width="9em" size="large" v-model="from.reachLocation"
-                        :label="lang[langType].reachLocation" :placeholder="lang[langType].reachLocationContent" />
+                    <van-field 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 label-width="9em" size="large" v-model="from.reachTime" is-link readonly
-                        @click="showReachTime = true" :label="lang[langType].reachTime"
-                        :placeholder="lang[langType].reachTimeContent" />
+                    <van-field size="large" v-model="from.reachTime" is-link 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" @calcan="showReachTime = false" />
                     </van-popup>
 
-                    <!-- 接站地点 -->
-                    <van-field label-width="9em" size="large" v-model="from.pickUpLocation"
-                        :label="lang[langType].pickUpLocation" :placeholder="lang[langType].pickUpLocationContent" />
-
-                    <!-- 离开交通方式 -->
-                    <van-field label-width="9em" size="large" v-model="from.leavingTransportationMode"
-                        :label="lang[langType].leavingTransportationMode"
-                        :placeholder="lang[langType].leavingTransportationModeContent" />
-
                     <!--  离开车次 -->
-                    <van-field label-width="9em" size="large" v-model="from.leavingTrainNumber"
-                        :label="lang[langType].leavingTrainNumber"
-                        :placeholder="lang[langType].leavingTrainNumberContent" />
-
-                    <!--  离开地点 -->
-                    <van-field label-width="9em" size="large" v-model="from.leavingLocation"
-                        :label="lang[langType].leavingLocation" :placeholder="lang[langType].leavingLocationContent" />
+                    <van-field 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 label-width="9em" size="large" v-model="from.leavingTime" is-link readonly
-                        @click="showLeavingTime = true" :label="lang[langType].leavingTime"
-                        :placeholder="lang[langType].leavingTimeContent" />
+                    <van-field size="large" v-model="from.leavingTime" is-link 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" @calcan="showLeavingTime = false" />
                     </van-popup>
 
-                    <!--  入住时间 -->
-                    <van-field label-width="9em" 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="9em" size="large" v-model="from.checkOutTime" is-link readonly
-                        @click="showCheckOutTime = true" :label="lang[langType].checkOutTime"
-                        :placeholder="lang[langType].checkOutTimeContent" />
+                    <van-field size="large" v-model="from.checkOutTime" is-link 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" @calcan="showCheckOutTime = false" />
                     </van-popup>
+
                     <!-- <br /> -->
                     <!-- <h4 class="title" v-text="lang[langType].conference"></h4> -->
                     <!-- <br /> -->
                     <!-- <h4 class="title" v-text="lang[langType].orther"></h4> -->
-                    <van-field label-width="9em" size="large" v-model="from.message" rows="3" autosize
-                        type="textarea"
+                    <van-field 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>
@@ -387,8 +360,7 @@
     </div>
 </template>
 <script setup>
-// import { onMounted, reactive } from "vue";
-import { ref, reactive, onBeforeUpdate, computed } from 'vue';
+import { ref, reactive, computed } from 'vue';
 import { showToast } from 'vant';
 import axios from 'axios';
 import config from '@/config/index.js';
@@ -466,23 +438,17 @@ const lang = ref(langpkg);
 const langType = ref(localStorage.getItem('langType') || 'zh');
 // 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 showCountryOrRegion = ref(false);
 
 // 展示表单
 const showForm = ref(false);
 
-const cardTypeList = ref([
-    { text: '身份证', value: '身份证' },
-    { text: '护照', value: '护照' },
-    { text: '港澳居民通行证', value: '港澳居民通行证' },
-    { text: '台湾居民通行证', value: '台湾居民通行证' },
-])
+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;
@@ -490,6 +456,8 @@ const isFile = () => {
 // 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;
 // };
 
@@ -506,48 +474,29 @@ const from = reactive({
     arrivalTime: ''
 });
 
-onBeforeUpdate(() => { });
-
-// getJoinType().then((res) => {
-//     cardTypeList.value = res.map((item) => {
-//         return {
-//             text: item.dictLabel,
-//             value: item.dictValue,
-//         }
-//     })
-// })
-
 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 = 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(':');
+    from.birthday = createTextDate(values.selectedValues);
 }
 const reachTimeConfirm = ({ selectedValues }) => {
     showReachTime.value = false;
-    from.reachTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
+    from.reachTime = createTextDate(selectedValues);
 }
 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(':');
+    from.leavingTime = createTextDate(selectedValues);
 }
 const checkOutTimeConfirm = ({ selectedValues }) => {
     showCheckOutTime.value = false;
-    from.checkOutTime = selectedValues.slice(0, 3).join('-') + ' ' + selectedValues.slice(3).join(':');
+    from.checkOutTime = createTextDate(selectedValues);
 }
+const onCountryOrRegionConfirm = ({ selectedValues }) => {
+    showCountryOrRegion.value = false;
+    from.countryOrRegion = selectedValues[0];
+}
+
 // 选择证件类型
 const onConfirm = ({ selectedValues }) => {
     showCardType.value = false;
@@ -593,59 +542,41 @@ const onSubmit = () => {
     }
     if (!isFile()) showToast(lang.value[langType.value].selectFile);
     saveData({
-        name: from.name,
-        photo: from.photoUrl[0].url,
-        namePinyin: from.pinyin,
-        gender: from.gender,
-        phone: from.contact,
-        email: from.email,
-        birthDate: 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.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.allergen,
-        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,
-        cardType: from.cardTypeName,
+        countryOrRegion: from.countryOrRegion, // 国家/地区
+        name: from.name, // 姓名
+        lastName: from.lastName, // 姓
+        firstName: from.firstName, // 名
+        photo: from.photoUrl[0].url, // 照片
+        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(() => {
         showToast(lang.value[langType.value].registration);
         // 清空表单内容 from
-        Object.keys(from).forEach((key) => {
-            from[key] = '';
-        });
+        // Object.keys(from).forEach((key) => {
+        //     from[key] = '';
+        // });
     }).catch(() => {
         showToast(lang.value[langType.value].registrationError);
     });
@@ -658,7 +589,6 @@ const onSubmit = () => {
     max-width: 750px;
     margin: 0 auto;
     min-height: 100vh;
-    // background: linear-gradient(270deg, #1C4DD6 0%, #1D18BC 100%);
     font-weight: 400;
     position: relative;
     font-family: Source Han Sans CN !important;
@@ -675,22 +605,14 @@ const onSubmit = () => {
         }
     }
 
-    input {
-        text-align: right;
-    }
-
     .text {
         padding: 8px 8px 0 8px;
         text-align: justify;
-        line-height: 1.8em;
+        line-height: 1.75em;
         font-size: 16px;
         color: #3D3D3D;
     }
 
-    .label {
-        width: 5em;
-    }
-
     h4 {
         color: #031280 !important;
     }
@@ -702,6 +624,13 @@ const onSubmit = () => {
         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;

+ 30 - 54
src/view/fenghui/lang.js

@@ -1,20 +1,24 @@
 export default {
     "zh": {
         "signUp": "我要报名",
-        "forumTopic": "论坛主题",
-        "forumTopicContent": "共享数字发展新机遇 共建中拉⽹络空间命运共同体",
         "wrestleMania": "举办时间",
-        "wrestleManiaContent": "2025年5⽉15⽇⾄16⽇(会期2天,不含报到和离会)",
+        "wrestleManiaContent": "2025年5⽉15⽇⾄16⽇<br />(会期2天,不含报到和离会)",
         "venue": "举办地点",
-        "venueContent": "西安国际会议中⼼(西安市灞桥区浐灞⽣态区世博⼤道2626号)",
+        "venueContent": "西安国际会议中⼼<br />(西安市灞桥区浐灞⽣态区世博⼤道2626号)",
         "organization": "组织机构",
-        "organizationSub1": "主办单位:国家互联⽹信息办公室 陕西省⼈民政府",
-        "organizationSub2": "承办单位:陕西省互联⽹信息办公室 陕西省外事办公室",
+        "organizationSub1": "主办单位:",
+        "organizationSub2": "国家互联⽹信息办公室<br />陕西省⼈民政府",
+        "organizationSub3": "承办单位:",
+        "organizationSub4": "陕西省互联⽹信息办公室<br />陕西省外事办公室",
         "scale": "活动规模",
         "scaleContent": "拟邀请中国及拉美和加勒⽐国家政府部门代表、驻华使节,国际组织、⽹信企业、智库、媒体及机构代表等,论坛参会论坛规模约300⼈。其中外宾约150⼈,包含拉美国家⽹络安全研修班30余名外籍学员。",
         "basicInformation": "个人基本信息",
-        "name": "姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名",
-        "nameContent": "请输入姓名",
+        "name": "姓名(含大写)",
+        "nameContent": "示例:张三 ZHANG SAN",
+        "lastName": "姓",
+        "lastNameContent": "请输入姓氏",
+        "firstName": "名",
+        "firstNameContent": "请输入名称",
         "idCard": "身份证",
         "idCardContent": "请输入身份证",
         "career": "职&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;务",
@@ -31,12 +35,6 @@ export default {
         "conferenceTypeContent": "请选择证件类型",
         "unitType": "单位类型",
         "unitTypeContent": "请选择单位类型",
-        "jobLevel": "职务级别",
-        "jobLevelContent": "请选择职务级别",
-        "otherTitle": "其他称谓",
-        "otherTitleContent": "请输入其他称谓",
-        "chineseName": "中文姓名",
-        "chineseNameContent": "请输入中文名",
         "orther": "其他材料",
         "ortherNotes": "备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注",
         "ortherNotesContent": "特殊需求",
@@ -49,16 +47,16 @@ export default {
         "selectFile": "请选择照片",
         "registration": "报名成功",
         "registrationError": "报名失败",
-        "pinyin": "拼&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;音",
-        "pinyinContent": "请输入拼音",
         "gender": "性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别",
         "genderContent": "请输入性别",
         "email": "邮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;箱",
         "emailContent": "请输入邮箱",
         "birthday": "出生日期",
         "birthdayContent": "请输入生日",
-        "CountryOrRegion": "国家/地区",
-        "CountryOrRegionContent": "请输入国家/地区",
+        "countryOrRegion": "国&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;家",
+        "countryOrRegionContent": "请选择国家",
+        "countryRegion": "国家/地区",
+        "countryRegionContent": "请输入国家/地区",
         "provinceCity": "省&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;市",
         "provinceCityContent": "请输入省市",
         "passportContent": "证件号码不能为空",
@@ -67,62 +65,40 @@ export default {
         "beliefContent": "请输入宗教信仰",
         "cardTyep": "证件类型",
         "cardTyepContent": "请选择证件类型",
-        "title": "称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;谓",
-        "titleContent": "请输入称谓",
-        "diplomaticRank": "外交职衔 ",
-        "diplomaticRankContent": "请输入外交职衔",
-        "mainAchievements": "主要成就",
-        "mainAchievementsContent": "请输入主要成就",
-        "fixedLine": "固定电话",
-        "fixedLineContent": "请输入固定电话",
         "fax": "传&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;真",
         "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": "到达车次",
+        "reachTrainNumber": "到达车次/航班",
         "reachTrainNumberContent": "请输入到达车次/航班/车牌号",
-        "reachLocation": "到达西安地点",
-        "reachLocationContent": "请输入到达西安地点",
         "reachTime": "到达西安时间",
         "reachTimeContent": "请输入到达西安时间",
-        "leavingTransportationMode": "离开交通方式",
-        "leavingTransportationModeContent": "请输入离开交通方式",
-        "leavingTrainNumber": "离开车次",
+        "leavingTrainNumber": "离开车次/航班",
         "leavingTrainNumberContent": "请输入离开车次/航班/车牌号",
-        "leavingLocation": "离开地点",
-        "leavingLocationContent": "请输入离开地点",
-        "leavingTime": "离开时间",
-        "leavingTimeContent": "请输入离开时间",
-        "checkInTime": "入住时间",
-        "checkInTimeContent": "请输入入住时间",
+        "leavingTime": "送站时间",
+        "leavingTimeContent": "请输入送站时间",
         "checkOutTime": "退房时间",
         "checkOutTimeContent": "请输入退房时间",
-        "pickUpLocation": "接站地点",
-        "pickUpLocationContent": "请输入接站地点",
+        "cardTypeList": [
+            { text: '身份证', value: '身份证' },
+            { text: '护照', value: '护照' },
+            { text: '港澳居民通行证', value: '港澳居民通行证' },
+            { text: '台湾居民通行证', value: '台湾居民通行证' },
+        ],
+        "countryOrRegionList": [
+            { text: '中国', value: '中国' },
+            { text: '其他国家', value: '其他国家' },
+        ]
     },
     "en": {
     }