|
@@ -52,8 +52,10 @@
|
|
|
</template>
|
|
|
</van-field>
|
|
|
<van-popup v-model:show="showBirthday" destroy-on-close round position="bottom">
|
|
|
- <van-date-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel" @confirm="packerConfirm" :title="lang[langType].birthday"
|
|
|
- @cancel="showBirthday = false" :min-date="new Date(1970, 0, 1)" :max-date="new Date()" />
|
|
|
+ <van-date-picker :confirm-button-text="lang[langType].confirm"
|
|
|
+ :cancel-button-text="lang[langType].cancel" @confirm="packerConfirm"
|
|
|
+ :title="lang[langType].birthday" @cancel="showBirthday = false" :min-date="new Date(1970, 0, 1)"
|
|
|
+ :max-date="new Date()" />
|
|
|
</van-popup>
|
|
|
|
|
|
<!-- 照片 -->
|
|
@@ -104,7 +106,8 @@
|
|
|
:rules="[{ required: true, trigger: 'onBlur', message: lang[langType].emergencyContactPhoneContent }]"
|
|
|
:placeholder="lang[langType].emergencyContactPhoneContent">
|
|
|
<template #label>
|
|
|
- <span :class="langType === 'zh' ? 'label' : ''" v-html="lang[langType].emergencyContactPhone"></span>
|
|
|
+ <span :class="langType === 'zh' ? 'label' : ''"
|
|
|
+ v-html="lang[langType].emergencyContactPhone"></span>
|
|
|
</template>
|
|
|
</van-field>
|
|
|
|
|
@@ -118,7 +121,8 @@
|
|
|
</template>
|
|
|
</van-field>
|
|
|
<van-popup v-model:show="showCardType" destroy-on-close round position="bottom">
|
|
|
- <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel" :model-value="formData.cardType" :columns="cardTypeList" @cancel="showCardType = false"
|
|
|
+ <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel"
|
|
|
+ :model-value="formData.cardType" :columns="cardTypeList" @cancel="showCardType = false"
|
|
|
@confirm="onConfirm" />
|
|
|
</van-popup>
|
|
|
|
|
@@ -170,7 +174,8 @@
|
|
|
</template>
|
|
|
</van-field>
|
|
|
<van-popup v-model:show="showUnitType" destroy-on-close round position="bottom">
|
|
|
- <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel" :model-value="formData.unitType" :columns="unitTypeList" @cancel="showUnitType = false"
|
|
|
+ <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel"
|
|
|
+ :model-value="formData.unitType" :columns="unitTypeList" @cancel="showUnitType = false"
|
|
|
@confirm="onUnitTypeConfirm" />
|
|
|
</van-popup>
|
|
|
|
|
@@ -236,7 +241,8 @@
|
|
|
</template>
|
|
|
</van-field>
|
|
|
<van-popup v-model:show="showReachTime" destroy-on-close round position="bottom">
|
|
|
- <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel" :title="lang[langType].reachTime" :columns="dateTimeColumns" @confirm="reachTimeConfirm"
|
|
|
+ <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel"
|
|
|
+ :title="lang[langType].reachTime" :columns="dateTimeColumns" @confirm="reachTimeConfirm"
|
|
|
@cancel="showReachTime = false" />
|
|
|
</van-popup>
|
|
|
|
|
@@ -256,7 +262,8 @@
|
|
|
</template>
|
|
|
</van-field>
|
|
|
<van-popup v-model:show="showLeavingTime" destroy-on-close round position="bottom">
|
|
|
- <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel" :title="lang[langType].leavingTime" :columns="dateTimeColumns" @confirm="leavingTimeConfirm"
|
|
|
+ <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel"
|
|
|
+ :title="lang[langType].leavingTime" :columns="dateTimeColumns" @confirm="leavingTimeConfirm"
|
|
|
@cancel="showLeavingTime = false" />
|
|
|
</van-popup>
|
|
|
|
|
@@ -268,8 +275,9 @@
|
|
|
</template>
|
|
|
</van-field>
|
|
|
<van-popup v-model:show="showCheckOutTime" destroy-on-close round position="bottom">
|
|
|
- <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel" :title="lang[langType].checkOutTime" :columns="dateTimeColumns"
|
|
|
- @confirm="checkOutTimeConfirm" @cancel="showCheckOutTime = false" />
|
|
|
+ <van-picker :confirm-button-text="lang[langType].confirm" :cancel-button-text="lang[langType].cancel"
|
|
|
+ :title="lang[langType].checkOutTime" :columns="dateTimeColumns" @confirm="checkOutTimeConfirm"
|
|
|
+ @cancel="showCheckOutTime = false" />
|
|
|
</van-popup>
|
|
|
|
|
|
<van-field input-align="right" v-model="formData.message" rows="3" autosize type="textarea"
|
|
@@ -282,7 +290,7 @@
|
|
|
<van-button
|
|
|
style="background: linear-gradient(270deg, #1D19BC 0%, #1C4CD5 100%);margin: 0 auto;width: calc(100% - 40px);"
|
|
|
block type="primary" native-type="submit">
|
|
|
- {{lang[langType].submit}}
|
|
|
+ {{ lang[langType].submit }}
|
|
|
</van-button>
|
|
|
</van-form>
|
|
|
</div>
|
|
@@ -290,11 +298,11 @@
|
|
|
<script setup>
|
|
|
import { defineEmits, defineProps, reactive, ref, computed, defineExpose } from 'vue';
|
|
|
import { showLoadingToast, showToast, showDialog } from 'vant';
|
|
|
-import { saveData } from '@/api/2025.js';
|
|
|
+import { saveData, uploadImage } from '@/api/2025.js';
|
|
|
import config from '@/config/index.js';
|
|
|
import axios from 'axios';
|
|
|
import lang from './lang.js';
|
|
|
-const props = defineProps(['langType']);
|
|
|
+const props = defineProps(['langType','verificationCode', 'subData']);
|
|
|
|
|
|
const emits = defineEmits(['closeComponent']);
|
|
|
|
|
@@ -315,7 +323,7 @@ const onClickLeft = () => {
|
|
|
};
|
|
|
|
|
|
const reset = () => {
|
|
|
- form.value.resetValidation();
|
|
|
+ form.value.resetValidation();
|
|
|
}
|
|
|
const createTextDate = values => values.slice(0, 3).join('-') + ' ' + values.slice(3).join(':');
|
|
|
const packerConfirm = (values) => {
|
|
@@ -336,12 +344,12 @@ const checkOutTimeConfirm = ({ selectedValues }) => {
|
|
|
}
|
|
|
const onUnitTypeConfirm = (values) => {
|
|
|
showUnitType.value = false;
|
|
|
- formData.unitType = values.selectedValues;
|
|
|
+ formData.unitType = values.selectedOptions[0].text;
|
|
|
formData.unitTypeName = values.selectedOptions[0].text;
|
|
|
}
|
|
|
const onConfirm = (values) => {
|
|
|
showCardType.value = false;
|
|
|
- formData.cardType = values.selectedValues;
|
|
|
+ formData.cardType = values.selectedOptions[0].text;
|
|
|
formData.cardTypeName = values.selectedOptions[0].text;
|
|
|
}
|
|
|
|
|
@@ -354,10 +362,31 @@ const beforeDelete = (index) => {
|
|
|
const filesize = () => showToast(lang[props.langType].fileSize);
|
|
|
const beforeRead = (file) => {
|
|
|
if (!file) showToast(lang[props.langType].photoContent);
|
|
|
- console.log(file);
|
|
|
const oriData = new FormData();
|
|
|
oriData.append('file', file.file);
|
|
|
|
|
|
+ uploadImage({
|
|
|
+ file: file.file, // 图片文件对象,必填
|
|
|
+ }).then(res => {
|
|
|
+ loading.close();
|
|
|
+ if (res.status !== 200 || res.data.code !== 0) {
|
|
|
+ showToast(res.msg || lang[props.langType].upFileError);
|
|
|
+ formData.photoUrl = ''
|
|
|
+ return
|
|
|
+ }
|
|
|
+ showToast(lang[props.langType].upFileSusscess);
|
|
|
+ formData.photoUrl = res.data.data
|
|
|
+ photo.value = [
|
|
|
+ {
|
|
|
+ url: res.data.data,
|
|
|
+ file: file.file,
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }).catch((res) => {
|
|
|
+ loading.close();
|
|
|
+ showToast(res.msg || lang[props.langType].upFileError);
|
|
|
+ })
|
|
|
+
|
|
|
const loading = showLoadingToast({
|
|
|
message: lang[props.langType].upFile,
|
|
|
forbidClick: true,
|
|
@@ -374,14 +403,7 @@ const beforeRead = (file) => {
|
|
|
}).then(res => {
|
|
|
loading.close();
|
|
|
if (res.status !== 200 || res.data.code !== 0) {
|
|
|
- const messages = res.data
|
|
|
- let message = lang[props.langType].upFileError;
|
|
|
- if (messages.cnMessage && props.langType === 'zh') {
|
|
|
- message = messages.cnMessage;
|
|
|
- } else if (messages.enMessage && props.langType === 'en') {
|
|
|
- message = messages.enMessage;
|
|
|
- }
|
|
|
- showToast(message);
|
|
|
+ showToast(res.msg || lang[props.langType].upFileError);
|
|
|
formData.photoUrl = ''
|
|
|
return
|
|
|
}
|
|
@@ -393,9 +415,9 @@ const beforeRead = (file) => {
|
|
|
file: file.file,
|
|
|
}
|
|
|
]
|
|
|
- }).catch(() => {
|
|
|
+ }).catch((res) => {
|
|
|
loading.close();
|
|
|
- showToast(lang[props.langType].upFileError);
|
|
|
+ showToast(res.msg || lang[props.langType].upFileError);
|
|
|
})
|
|
|
return false;
|
|
|
};
|
|
@@ -456,6 +478,7 @@ const onSubmit = () => {
|
|
|
if (loading) return
|
|
|
loading = true
|
|
|
saveData({
|
|
|
+ code: props.verificationCode, // 邀请码
|
|
|
lastName: formData.lastName, // 姓
|
|
|
firstName: formData.firstName, // 名
|
|
|
gender: formData.gender, // 性别
|
|
@@ -485,14 +508,7 @@ const onSubmit = () => {
|
|
|
userType: '国外嘉宾'
|
|
|
}).then((res) => {
|
|
|
if (!isNaN(res.code) && res.code !== 0) {
|
|
|
- const messages = res.data
|
|
|
- let message = lang[props.langType].registrationError;
|
|
|
- if (messages.cnMessage && props.langType === 'zh') {
|
|
|
- message = messages.cnMessage;
|
|
|
- } else if (messages.enMessage && props.langType === 'en') {
|
|
|
- message = messages.enMessage;
|
|
|
- }
|
|
|
- showToast(message);
|
|
|
+ showToast(res.msg || lang[props.langType].networkError);
|
|
|
return;
|
|
|
}
|
|
|
// 清空表单内容 from
|
|
@@ -503,9 +519,9 @@ const onSubmit = () => {
|
|
|
showDialog({
|
|
|
message: lang[props.langType].registration,
|
|
|
})
|
|
|
- }).catch(() => {
|
|
|
+ }).catch((res) => {
|
|
|
loading = false
|
|
|
- showToast(lang[props.langType].registrationError);
|
|
|
+ showToast(res.msg || lang[props.langType].networkError);
|
|
|
});
|
|
|
}
|
|
|
defineExpose({ reset })
|